2012-10-23 2 views
2

DoA 키와 함께 OAuth2를 사용하여 API를 보호합니다.DoAkeeper를 사용한 OAuth 콜백 URL 매개 변수

문제는 하나의 클라이언트가 사용자를 내 OAuth 플로우로 리디렉션하는 여러 가지 다른 플로우가 있다는 것입니다.

그는 동적 내 OAuth를 흐름에 사용자를 리디렉션하고 나는 그의 콜백 URL을 호출하고있을 때 다시 이러한 매개 변수를 얻을 때 일부 매개 변수를 추가하고 싶습니다. 이렇게하면이 콜백이 어떤 흐름에서 시작되었는지 알 수 있습니다.

OAuth 2에서 가능합니까? 문지기와? 방법?

편집 : 힌트에 대한

감사 Zólyomi 이스트 반. auth 끝점을 호출하기 전에 state 매개 변수를 설정하고 콜백에서 다시 가져 왔습니다. 그러나 아무 것도 설정하지 않아도 임의의 문자열이있는 상태 매개 변수가 반환된다는 것을 알았습니다. 어떤 생각인지 그것은 무엇입니까? 나는 아무 것도 망치고 있지 않다는 것을 확신하고 싶습니다 ...

+2

OAuth2에서는 가능합니다. 모든 흐름에 대한 OAuth2 요청에서 상태 정보를 'state'매개 변수에 저장할 수 있습니다. 그 가치는 승인 결과와 함께 귀하에게 반환되므로 귀하는 귀하의 주를 다시 돌려 받으므로 귀하가 달성하고자하는 바를 정확히 수행해야합니다. 그러나 Doorkeeper에 익숙하지 않아 구현을 도와 드릴 수 없습니다. –

+0

감사. auth 끝점을 호출하기 전에 state 매개 변수를 설정하고 다시 가져 왔습니다. 그러나 아무 것도 설정하지 않아도 임의의 문자열이있는 상태 매개 변수를 얻는 것을 발견했습니다. 어떤 생각인지 그것은 무엇입니까? – davidrac

+0

나의 유일한 생각은 버그라는 것입니다. ;-) –

답변

2

음, 상태 매개 변수를 사용하는 것은 사실 해결책이었습니다. 요청에 상태를 추가 한 다음 컨트롤이 내 코드로 반환 될 때 다시 가져옵니다.

상태 매개 변수는 공격자가 공격자의 와 edirect 다음에 자신의 자원에 다음 요령을 익히면 사용자 액세스 권한을 부여 곳 CSRF 공격을 방지하기 위해 요청 및 콜백을 연결하는 데 사용됩니다 사양에 따라 토큰.

명백히 ominauth oauth 2는 CSRF 공격을 탐지하기 위해 사용되지 않는 한이 매개 변수에 임의의 값을 할당합니다.