アサーション権限付与タイプ
OAuth認可サーバーで直接的なユーザー承認ステップを使用せずに、アサーションとして表される既存の信頼関係を使用する場合は、この権限付与タイプを使用します。
次のダイアグラムに、アサーション権限付与タイプのフローを示します。
このOAuthフロー:
-
ユーザーは、生成されたユーザー・アサーションを送信して、クライアント・アプリケーションへのアクセスを試行します。ノート
アサーションがどのように取得されるかのプロセスについてはここでは説明しません -
クライアント・アプリケーションは、ユーザー・アサーションまたはサードパーティのユーザー・アサーション、およびクライアント資格証明を指定して、アクセス・トークン(多くの場合、リフレッシュ・トークン)をリクエストします。
-
認可サーバーは、クライアント・アプリケーションにアクセス・トークンを返します。
-
クライアント・アプリケーションは、APIコールでアクセス・トークンを使用して、保護されているデータ(ユーザーのリストなど)を取得します。
機能 | 選択可能 |
---|---|
クライアントの認証が必要 | はい |
ユーザー資格証明をクライアントに認識させる必要があります。 | いいえ |
ブラウザベースのエンド・ユーザーとの対話 ノート:アサーションを生成するプロセスにはユーザーとの対話が必要になる場合があります。 |
いいえ |
認証のために外部アイデンティティ・プロバイダの使用が可能 | はい |
リフレッシュ・トークンを許可 | はい |
アクセス・トークンがエンド・ユーザーのコンテキスト内 アクセス・トークンはアサーションのサブジェクトのコンテキスト内で、エンド・ユーザー、サービスまたはクライアント自体の場合があります。 |
多分 |
アサーション権限付与タイプの認可フローの例
このフロー例では、Example.comが複数のOracle Cloud PaaSおよびSaaSアプリケーションをサブスクライブしています。Example.comユーザーは、認可プロセスを通過せずに(委任認可)、Oracle Cloudプロパティにアクセスできます。
この例のコマンドは、URL構造
https://<domainURL>/resource-path
を使用します。ここで、<domainURL>
はIdentity Service URLを表し、リソース・パスはIdentity Service APIを表します。使用する適切なURL構造の詳細は、「リクエストの送信」を参照してください。-
アプリケーション・タイプとして「モバイル・アプリケーション」を指定します。
-
権限付与タイプとして「Assertion」を選択します。
アサーション付与タイプおよび認可フロー・ダイアグラムの詳細は、アサーション付与タイプを参照してください。
承認フロー
-
ユーザーはクライアント・アプリケーション(JCSなど)へのアクセスを試行します。
URLには、リクエストされているアクセスのタイプを示す問合せパラメータが含まれます。SAML2アサーションはBase64でエンコードされており、SAMLアサーションの受信者値は次のいずれかである必要があります。
- ユーザー・インタフェースのOAuth設定の「発行者」フィールドの発行者。
- または、
https://<domainURL>/
。 - または、検出レスポンスの
secure_saml_sp_sso_endpoint
の値。
curl -i -H 'Authorization: Basic <base64Encoded clientid:secret>' -H 'Content-Type: application/x-www-form-urlencoded;charset=UTF-8' --request POST https://<domainURL>/oauth2/v1/token -d 'grant_type=password&username=<user-name>&password=<example-password>&scope=<scope value>'
リクエストにリフレッシュ・トークンを含む認可ヘッダーを使用したリクエストの例
curl -i -H 'Authorization: Basic <base64Encoded clientid:secret>' -H 'Content-Type: application/x-www-form-urlencoded;charset=UTF-8' --request POST https://<domainURL>/oauth2/v1/token -d 'grant_type=password&username=<user-name>&password=<example-password>&scope=<Resource Server Scope>%20offline_access'
JWTクライアント・アサーションを使用したリクエストの例
curl -i -H 'Content-Type: application/x-www-form-urlencoded;charset=UTF-8' --request POST https://<domainURL>/oauth2/v1/token -d 'grant_type=password&username=<user-name>&password=<example-password>&client_id=<client-id>&client_assertion_type=urn%3Aietf%3Aparams%3Aoauth%3Aclient-assertion-type%3Ajwt-bearer&client_assertion=<client-assertion>&scope=<scope value>'
リクエストにリフレッシュ・トークンを含むJWTクライアント・アサーションを使用したリクエストの例
curl -i -H 'Content-Type: application/x-www-form-urlencoded;charset=UTF-8' --request POST https://<domainURL>/oauth2/v1/token -d 'grant_type=password&username=<user-name>&password=<example-password>&client_id=<client-id>&client_assertion_type=urn%3Aietf%3Aparams%3Aoauth%3Aclient-assertion-type%3Ajwt-bearer&client_assertion=<client-assertion>&scope=<Resource Server Scope>%20offline_access'
-
Oracle Web Services Manager (クライアント側)エージェントはクライアント・アプリケーションをインターセプトし、リソース・サーバー(Fusionアプリケーション)に対するREST APIコールを使用してアクセス・トークンを取得します。
-
OAuth認可サーバーは、送信された認可ヘッダーまたはアサーションに基づいてクライアント・アプリケーションを認証し、リクエスト側クライアント・アプリケーションに付与されたアプリケーション・ロールで示される権限に基づいて適用可能なすべてのスコープを含むアクセス・トークンを返します。
-
ユーザーは、別のOPCアプリケーションからOPCアプリケーションにアクセスできます。