문제

우리 팀과 나는 현재 꽤 큰 프로젝트를 진행하고 있습니다.우리는 (현재) 두 가지 방법으로 액세스할 수 있는 온라인 게임을 개발 중입니다.-웹 브라우저를 통해 애플리케이션 전체 JavaScript(클라이언트 측), 전체 Ajax(기본적으로 UI가 JS 클라이언트 측에서 관리된다는 의미).- iPhone 애플리케이션을 통해(UI는 애플리케이션 자체에서 관리됩니다.)

서로 다른 두 애플리케이션 사이에서 핵심 로직은 동일하게 유지되므로 필요한 모든 것을 허용할 수 있는 웹 서비스(가능한 경우 RESTful 또는 Rest와 같은 표준을 사용하여)를 만드는 것이 가장 좋은 솔루션이라고 생각합니다(제가 틀렸을 수도 있음). 운영.

이 논리에 따라 문제가 발생했습니다.사용자의 인증 및 신원 관리.특정 작업을 수행하려면 애플리케이션 사용자를 인증해야 하므로 문제가 발생합니다.

WS 보안을 조사해 보았지만 이를 위해서는 분명히 비밀번호를 서버에 암호화되지 않은 상태로 저장해야 하는데 이는 허용되지 않습니다!그런 다음 Oauth를 살펴보았지만 언뜻 보기에 이것은 설정해야 할 작업이 많고 내 요구 사항에 특별히 적합하지 않은 것처럼 보였습니다(응용 프로그램을 수락해야 하는 방식은 내 응용 프로그램이자 응용 프로그램일 뿐이므로 마음에 들지 않습니다). 외부 애플리케이션이 아닌 웹 서비스를 사용합니다.)내가 원하는 것을 할 수 있는 다른 방법에 대해 많이 읽고 들었지만, 솔직히 말해서 조금 혼란스럽고 어떤 정보가 신뢰할 수 있고 어떤 정보가 신뢰할 수 없는지 모르겠습니다.

백엔드에는 Symfony2를 사용하고 클라이언트 측 JavaScript에는 jquery를 사용하고 있다는 점에 주목하고 싶습니다.또한 제가 읽고 들은 모든 내용이 정말 혼란스럽기 때문에 자세한 단계별 답변을 원합니다.

시간을 내주셔서 감사합니다. 매우 긴급한 상황이므로 누군가 도와주실 수 있기를 바랍니다.

좋은 저녁이에요

도움이 되었습니까?

해결책

이것이 귀하의 요청에 응답하는지 완전히 확신할 수는 없지만 UI는 항상 클라이언트 측에서 처리되므로 상태 비저장 HTTP 인증을 사용할 수 있다고 생각합니다.

이것은 방화벽입니다. security.yml:

security:
    firewalls:
        api:
            pattern: ^/api/ # or whatever path you want
            http_basic: ~
            stateless: true

그리고 기본적으로 아이디어는 서버에서 일반 사용자 공급자, 인코더 및 기타 기능을 사용하여 최대 보안을 달성하고 클라이언트에서는 jQuery와 같은 HTTP 인증 헤더를 보내는 것입니다.

$.ajax("...", {
    username: "Foo",
    password: "bar"
});

인증은 상태 비저장(쿠키가 생성되지 않음)이므로 모든 요청과 함께 헤더를 전송해야 하지만 애플리케이션이 거의 전적으로 클라이언트측이므로 이는 문제가 되지 않습니다.

당신은 또한 확인할 수 있습니다 Symfony2 보안 매뉴얼 HTTP 인증 설정 방법에 대한 자세한 내용은또한 자격 증명이 포함된 요청이 보호되도록 ACL에서 HTTPS 액세스를 강제해야 합니다(requires_channel: https ACL 정의에서).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top