2013-10-23 2 views
3

시작하기 전에 저는 약간의 OAuth2 초보자입니다. 그래서 여전히 다양한 사용 권한 범위와 보조금에 대한 내 머리를 감싸고 있습니다.액세스 토큰이없는 OAuth2 클라이언트

Laravel OAuth2 Server 패키지를 사용하여 OAuth2 서버를 성공적으로 구현할 수있었습니다.

내가 현재 일하고있는 사이트는 client_credentials 보조금 유형을 사용하여 API에서 간단히 dogfood합니다. 이 작업을 성공적으로 수행 할 수있게되었고 제공된 액세스 토큰을 사용하여 API 호출을 수행 할 수있었습니다.

그러나 Instagram, Soundcloud 등과 비슷한 아키텍처를 어떻게 구현할 수 있을지 궁금합니다. 기본 엔드 포인트에 을 입력하면 access_token이 필요하지 않습니다. 그들은 어떻게합니까? 이것이 맞춤형 보조금 유형입니까?

가급적이면 사용자 정보 수정과 같은 개인 리소스에 액세스 할 때 액세스 토큰을 요구하기 만하면됩니다. 알고있는 한,이 경우에는 password을 사용해야합니다. 교부 유형, 문제가되지 않습니다.

답변

2

서버에 두 가지 리소스가 있습니다. a) 액세스 확인이 필요한 리소스 b) 공개적으로 액세스 할 수있는 리소스.

액세스 검사가 필요한 리소스에 대한 작업을 수행하려면 요청에서 OAuth 헤더를 통해 사용자를 식별해야합니다. Laravel의 맥락에서 - 이것은 Oauth로 지정된 'before'키가있는 경로입니다.

액세스가 필요하지 않은 작업은 경로를 작성하여 사용자에 대한 컨텍스트를 제공하는 인수를 허용하여 사용자가 관련이있는 사용자에 대한 컨텍스트를 수집 할 수 있습니다. 사용자가 어떤 종류의 액세스없이 볼 수있는 프로필이 있다고 가정 해 보겠습니다. JSON 표현을위한 API 엔드 포인트는/api/profile/[user_id] 일 수 있습니다. 여기서 [user_id]는 보려는 사용자 프로파일의 ID입니다. 액세스에 신경 쓰지 않는이 경로의 경우 경로 선언에서 oauth before filter를 사용하지 않을 수 있습니다.

+0

나는 이해하지만, 내가 원하는 것을 이해하지 못한다. Soundcloud, Instagram 등은 기본 엔드 포인트에 대한 보안으로'client_id'를, 보안 엔드 포인트에 대한'access_token '을 요구합니다. 둘 다 보안의 한 형태이며, 후자는 더 강력합니다. 그들은 기본 엔드 포인트를 열어 두지 않았으며 이것이 내가 달성하기 위해 찾고있는 것입니다. 이렇게하면 내 클라이언트 응용 프로그램이 사용자가 실제로 로그인 할 때까지 액세스 토큰을 계속 요청하지 않아도됩니다. 불행히도 귀하의 제안은 API를 기본 수준에서 완전히 열어 놓을 것입니다. –

5

OAuth는 개발자가 원하는 리소스를 얻기 위해 서버에 필요한 요청 수를 개발자에게 기본적으로 알려주는 2-legged 또는 3-legged와 같은 몇 가지 흐름이 있습니다.

는 예를 들어, 두 다리의 흐름에 당신은 (당신이 원하는 자원에 대한 다른 요청을 할 수 귀하의 ID와 비밀 (첫 번째 요청), 당신이 되돌려 access_token은 그 토큰을 사용하여 얻을 수있는 요청을 보내 두 번째 요청).

Instagram 예제로 돌아가서 client_id을 1-legged OAuth 플로우로만 생각할 수 있습니다. 원하는 리소스를 얻기 위해 서버에 하나의 요청 만하기 때문에 생각할 수 있습니다.

예를 들어 프로필 사진이나 사용자의 닉네임과 같이 덜 민감한 리소스에는 이러한 흐름을 사용할 수 있습니다.

1 다리 통화 흐름의 구현은 간단합니다. - user_id이 유효하고 응용 프로그램이 요청 된 리소스에 액세스하기 위해 사용자 승인이 필요하지 않은 경우 계속 진행하여 리소스를 표시하십시오.

따라서 1-legged 플로우를 구현하는 것은 client_id가 유효한지 확인하고 요청 된 리소스에 사용자 권한이 필요한지 확인하는 것입니다. 즉, 1-legged를 사용하여 사용자 프로필 사진을 요청할 수 있지만 사용자의 비공개 메시지를 요청하는 데 동일한 흐름을 사용할 수는 없습니다.

각 OAuth 플로에 대한 자세한 내용은 The OAuth Bible에서 확인할 수 있습니다.

관련 문제