2014-02-05 3 views
0

symfony2에서 REST API를 구축하고 있으며 다른 보안 수준을 관리하는 가장 좋은 방법이 무엇인지 확신 할 수 없습니다.symfony2 나머지 클라이언트와 최종 사용자 보안이있는 나머지 api

  • 인증되지 않은 클라이언트는 API에서 (응용 프로그램 또는 API 데이터에 도달 할 권한이없는 웹 사이트) 얻을 수 없다 (얻을 넣어, 게시, 등) 데이터
  • 인증 된 클라이언트가 일부를 요청할 수있을 것입니다 API와 관련된 데이터는 사용자 관련 데이터가 아닙니다.
  • 반면에 최종 사용자는 API의 일부 개인용 리소스에 액세스하기 위해 어떻게 든 로그인해야합니다.

예를 들어, api/v1/philosophies은 인증 된 클라이언트에 모든 철학을 나열합니다. 등록되지 않은 최종 사용자는 목록을 볼 수 있습니다 : '이상주의, 사실주의, 실존주의, ...'. 그러나 최종 사용자는 api/v1/user/{userID}/favorites을 통해 자신이 선호하는 철학에 액세스하려면 인증 (등록 및 로그인)해야합니다.

나는 FOSUserBundle, FOSRestBundle 및 FOSOAuthServerBundle로 물건을 읽고 테스트 해 왔지만 사용자가 항상 토큰을 얻기 위해 로그인 한 모든 정보는 클라이언트와 사용자가 모두 보호합니다.

아이디어가 있으십니까?

약간의 표시 등이 있으십니까?

주세요.

답변

1

FOSRest와 FOSAuth는 필요한만큼 잘 작동 할 것이며, security.yml에서 액세스가 정의 된 방식을 변경해야하는 것처럼 보입니다. 자원에 액세스하기 위해 항상 로그인해야하는 유일한 이유는 자원이 보호되기 때문입니다. 당신은 당신이에 대한 익명 액세스를 허용 할 자원이있는 경우, 다음과 같이 그 security.yml에서 항목, 뭔가 만들 :이 로그인없이 접근 할 수 /api/v1/pilosophies을 만들 것

security: 
    access_control: 
     - { path: ^/api/v1/pilosophies$, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/api/v1, roles: IS_AUTHENTICATED_FULLY } 

, 다른 모든 자원은 계속 될 것이다 보호. 문서에 대한 자세한 내용은 Securing specific url patterns

결국 어떤 사람이 보호되고 있는지 여부를 결정하는 사람입니다. FOSOAuth는 그 결정과 아무 관련이 없습니다.

+0

그렇다면 API를 사용하기 위해 클라이언트의 흐름은 어떻게 될까요? 초기화시/oauth/v2/auth ///oauth/v2/token을 통해 토큰을 얻은 다음 API를 사용하십시오. 최종 사용자가 api의 보호 된 부분에서 정보에 액세스하려고 할 때마다 api는 로그인 양식을 반환 할 것입니다. ?? api가 승인되지 않은 액세스 오류 또는 그와 비슷한 것을 반환해야하며 사용자가 어떻게 든 로그인해야한다는 것을 이해합니다. 사용자가 oauth를 통해 로그인한다고 생각했습니다. 나는 약간 혼란 스럽다. – Noquepoaqui

+0

사용자가 oAuth 토큰을 얻으면 그는 이미 로그인되어 있으므로 로그인 양식이 필요하지 않습니다. 그가 토큰을 가지고있는 한, API의 보호 된 부분에 액세스 할 수 있어야합니다. – Sehael

+0

mh ... 나는 모든 것이 잘못되고 있다고 생각한다. 어떤 웹 사이트 또는 앱이 API에 액세스 할 수 있는지 어떻게 알 수 있습니까? 나는 그것도 oauth를 사용할 것이라고 생각했다. – Noquepoaqui