2012-06-26 8 views
19

すべてのapi呼び出しがhttpsを通じて送信される場合、HMACは追加のセキュリティを追加しますか?たとえば、oauth 2では、クライアントはハッシュをまったく使用せずにその秘密鍵をプロバイダに送信します。これはhttpsを超えているため安全だと考えられますか?厳密にoauthではなく、この呼び出しでHMACを使用するとoauth 2がより安全になりますか?もしそうなら、なぜそれがoauth 2の標準的な部分ではないのですか?すべてのAPI呼び出しがhttpsを通じて行われる場合、HMACは必要ですか?

答えて

13

OAuth 2標準では、認証サーバはすべてのエンドポイントでHTTPSを使用しなければならず、クライアントはHTTPSで保護されたコールバックを使用する必要があります(SHOULD)。メッセージの内容(ヘッダ、クエリパラメータ、OAuthを考慮したフラグメント)はサーバとクライアントだけが知っているので、HTTPS接続の使用は安全と考えられます。したがって、認証要求に別の署名を使用することは得られません。そのため、そのような署名は標準で言及されていません。

これは必ずしも応答のために保持する必要はありません。クライアントが保護されていないコールバックに対する認証応答を受け取った場合、クライアントはその有効性を検証できません。このような場合、攻撃者は任意の認証結果をクライアントに送信できます。コールバックパラメータでシグネチャを追加すると、これを回避できます。しかし、代わりにHTTPSコールバックを使用して相互クライアント/サーバー認証を使用する方が良い方法と思われます。

承認中に署名を使用することは実際にはありませんが、アクセストークンを盗むのを防ぐために保護されたリソースにアクセスすると便利です。このため、MACトークンタイプが標準になっています(section 7.1を参照)。

0

HMACはあなたが誰であるかを判断する認証用です。httpsは、トランスポートのセキュリティを目的としたもので、途中の人に確実にトランスポートのコンテンツが表示されます。

Oauth 2認証サーバーは、あなたが誰であるかを決定する秘密鍵またはパスワードを使用します。 Oauth2リソースサーバーは、自分が誰であるかを判断する認証サーバーからのトークンを使用します。 httpsを使用するかどうかは、秘密鍵とトークンを保護するかどうかによって異なります。

関連する問題