2011-11-25 17 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

最も一般的な議論は、Webサーバーが一般的にHTTP要求URLを記録するので、クエリ文字列(GETパラメーター)に機密情報を入れないでください。 POSTデータは任意の長さにすることができるため、通常は記録されません。したがって、client_secretやコード(一度の使用ですが)を扱う際には、POSTペイロードにその値を渡すのが理にかなっています。

IMHO、client_secretを必要としないOAuth 2.0フローを使用している場合(またはHTTP認証ヘッダーにその値を入れることをお勧めします) - GETを許可することに問題はありません。

+0

Oauth2の場合、私たちはサーバに平文でclient_idとclient_keyを保存しています。この情報がサーバログに記録されていれば、データベースに既に存在するよりもずっと悪くなりますか? – Spike

+0

合意 - それはほぼ同じです。 WebサーバーとあなたのOAuth ASが両方ともあなたのコントロールの下にあるなら、GET IMHOを可能にする大したことはありません。 –

関連する問題