2011-11-25 3 views
23

의 OAuth 2.0 초안 v2-22 3.2 절은 말합니다 : 액세스 토큰 요청을 할 때클라이언트가 GET 또는 POST를 사용하여 OAuth 2 액세스 토큰을 가져와야합니까?

클라이언트는 HTTP "POST"방법을 사용해야합니다. 당신이 FacebookFoursquare OAuth2를 구현 보면

그러나, 그들은 액세스 토큰을 요청하는 간단한 GET 요청을하는 클라이언트를 부탁드립니다. 그들은 클라이언트에게 client_id와 client_secret을 URL에 넣도록 요청합니다.

OAuth 2 서버를 구축하고 Facebook 및 Foursquare의 구현을 본 후 클라이언트가 GET을 통해 액세스 토큰을 요청할 수 있도록 프로토콜을 위반하는 것도 고려 중입니다. 내 사이트의 통신은 Facebook, Foursquare와 유사한 SSL을 사용합니다.

그럼 내 질문은 다음과 같습니다. 클라이언트가 HTTPS를 통해 GET 메서드를 통해 액세스 토큰을 요청하도록 허용해서는 안되는 이유가 있습니까?

답변

9

가장 일반적인 인수는 웹 서버가 일반적으로 HTTP 요청 URL을 기록하기 때문에 쿼리 문자열 (GET 매개 변수)에 중요한 정보를 넣지 않아야한다는 것입니다. POST 데이터는 임의로 길 수 있으므로 일반적으로 기록되지 않습니다. 따라서 client_secret 또는 코드 (한 번 사용하더라도)를 처리 할 때는 POST 페이로드에서 전달해야합니다.

IMHO, client_secret을 필요로하지 않는 OAuth 2.0 흐름을 사용하는 경우 (또는 HTTP 권한 부여 헤더에 넣기를 권장 함) - GET 허용 문제가 표시되지 않습니다.

+0

서버 로그에 대해서는 좋은 점이 있지만 Oauth2의 경우 서버에 일반 텍스트로 client_id 및 client_key를 저장합니다. 따라서이 정보가 서버 로그에있는 경우 데이터베이스에 이미 존재하는 것보다 훨씬 심각합니다. – Spike

+0

동의 - 그때와 거의 같습니다. 웹 서버와 OAuth AS가 둘 다 통제하에 있다면 - 아무런 문제없이 IMHO를 사용할 수 있습니다. –

관련 문제