すべての API 呼び出しが https 経由で送信される場合、HMAC によってセキュリティが追加されますか? たとえば、oauth 2 では、クライアントは秘密鍵をハッシュせずにプロバイダーに送信します。これは https 経由なので安全だと考えられますか? 厳密には oauth ではありませんが、この呼び出しで HMAC を使用すると oauth 2 がより安全になりますか? もしそうなら、それが oauth 2 の標準部分ではないのはなぜですか?
2 に答える
OAuth 2 標準では、認可サーバーはすべてのエンドポイントで HTTPS を使用する必要があり、クライアントは HTTPS で保護されたコールバックを使用する必要があります。メッセージの内容 (OAuth を考慮したヘッダー、クエリ パラメータ、フラグメント) は、サーバーとクライアントのみが知っているため、HTTPS 接続の使用は安全であると見なされます。したがって、承認リクエストに別の署名を使用しても何のメリットもありません。そのため、そのような署名は標準でも言及されていません。
ただし、これは必ずしも応答に当てはまるとは限りません。クライアントが保護されていないコールバックへの承認応答を受信した場合、その有効性を検証できません。このような場合、攻撃者は任意の承認結果をクライアントに送信できます。コールバック パラメータを使用して署名を追加すると、これを回避できます。ただし、代わりに HTTPS コールバックを使用して相互クライアント/サーバー認証を使用する方が適切なソリューションと思われます。
承認時に署名を使用しても実際のメリットはありませんが、保護されたリソースにアクセスして、アクセス トークンの盗難を回避するのに役立つ場合があります。これが、MAC トークン タイプが標準に含まれている理由です。セクション 7.1を参照してください。
HMAC は、あなたが誰であるかを判断するための認証用です。https は、トランスポートの内容を途中で確認できるようにするトランスポートのセキュリティ用です。
Oauth 2 認可サーバーは、秘密鍵またはパスワードを使用してユーザーを特定します。Oauth2 リソース サーバーは、ユーザーが誰であるかを判断する承認サーバーからのトークンを使用します。https を使用するかどうかは、秘密鍵とトークンを保護するかどうかによって異なります。