クライアント認証情報モード
Client Credentials Grant : クライアントがユーザーに代わってリソースにアクセスするのではなく、クライアント自身のリソースにアクセスする状況に適用されます。クライアント アプリケーションは、独自の資格情報 (つまり、クライアント ID とクライアント シークレット) を使用して認証サーバーに対して直接認証し、アクセス トークンを取得します。この認証方法には、クライアントが独自のリソースにアクセスすることのみが許可されるため、ユーザーは関与しません。
端的に言えば、エンドユーザーを介さずにアプリケーション間の認証を行う方法です。例:
2 つのシステム A と B があります。システム A は外部に REST サービス インターフェイスを提供し、OAuth2 認証を使用します。システム A のインターフェイスを呼び出すために、B はクライアント資格情報モードを使用して A のインターフェイス サービスにアクセスできます。
実際のアプリケーションでは、このアプローチは企業内の SOA サービスで広く使用されています。
大企業では通常、さまざまなシステム間の通話インターフェイスを統一的に管理するための専用の SOA 部門があり、このような管理の主な利点は次のとおりです。
- 高い再利用性
- 電流制限などの便利な監視と管理。
- 互換性の向上: たとえば、A が提供するインターフェイスが変更された場合、ダウンストリーム呼び出しは SOA を変更するだけで済みます。
- より良いセキュリティ
OAuth2のクライアント資格情報モードが普及する前はBASIC認証が最も広く使われていたはずで、もちろん匿名アクセスも可能ですが、セキュリティは良くありません。では、なぜクライアント資格情報モードは安全なのでしょうか? 次に、まずクライアント資格情報モードがどのように機能するかを見てみましょう。
- 認証サーバーは、各クライアントに ID とキー (client_id と client_secret) を割り当てます。
- クライアントは、ID とキーを使用して認証サーバーからトークンを取得します。
- このトークンには有効期限があり、期限が切れると無効になります。トークンは再取得可能です。
ここのトークンには有効期限があるため、セキュリティが強化されます。この仕組みと現実