35.5 OAuth 12cのランタイムREST API
OAuthのランタイムREST APIでは、新しい12c OAuthサーバーで2-leggedおよび3-leggedのOAuthサービス・フローのRESTコールが提供されます。これらの項では、リソース・アクセス・トークンの取得方法を示すRESTリクエストのサンプルについて説明します。
アクセス・トークンの作成
http://<ManagedServerHost>:<ManagedServerPort>/oauth2/rest/token
-
リソース所有者の資格証明の使用
次に、サーバーに対するサンプル・リクエストを示します。
curl -i -H 'Authorization: Basic U1NPTGlua0NsaWVudDp3ZWxjb21lMQ==' -H "Content-Type: application/x-www-form-urlencoded;charset=UTF-8" -H "X-OAUTH-IDENTITY-DOMAIN-NAME: SSOLink" --request POST http://<ManagedServerHost>:<ManagedServerPort>/oauth2/rest/token -d 'grant_type=PASSWORD&username=weblogic&password=welcome1&scope=SSOLink.link1'
ノート:
すべてのリクエストに関連するヘッダー-
Authorization: Base64 URLエンコードClientID:秘密の組合せ。
-
X-OAUTH-IDENTITY-DOMAIN-NAME: クライアントが属しているアイデンティティ・ドメイン。
-
-
クライアント資格証明の使用
次に、サーバーに対するサンプル・リクエストを示します。
curl -i -H 'Authorization: Basic U1NPTGlua0NsaWVudDp3ZWxjb21lMQ==' -H "Content-Type: application/x-www-form-urlencoded;charset=UTF-8" -H "X-OAUTH-IDENTITY-DOMAIN-NAME: SSOLink" --request POST http://<ManagedServerHost>:<ManagedServerPort>/oauth2/rest/token -d 'grant_type=CLIENT_CREDENTIALS&scope=SSOLink.link1'
-
JWTベアラー・トークンの使用
次に、サーバーに対するサンプル・リクエストを示します。
curl -i -H 'Authorization: Basic U1NPTGlua0NsaWVudDp3ZWxjb21lMQ==' -H "Content-Type: application/x-www-form-urlencoded;charset=UTF-8" -H "X-OAUTH-IDENTITY-DOMAIN-NAME: SSOLink" -- request POST http://<ManagedServerHost>:<ManagedServerPort>/oauth2/rest/token -d 'grant_type=JWT_BEARER&scope=SSOLink.link1&assertion=<assertion token value>'
-
リフレッシュ・トークンの使用
次に、サーバーに対するサンプル・リクエストを示します。
curl -i -H 'Authorization: Basic U1NPTGlua0NsaWVudDp3ZWxjb21lMQ==' -H "Content-Type: application/x-www-form-urlencoded;charset=UTF-8" -H "X-OAUTH-IDENTITY-DOMAIN-NAME: SSOLink" --request POST http://<ManagedServerHost>:<ManagedServerPort>/oauth2/rest/token -d 'grant_type=REFRESH_TOKEN&scope=SSOLink.link1&refresh_token=<RefreshTokenValue>'
-
JWTを含むリソース所有者の資格証明の使用 - クライアント・アサーション・トークン
次に、サーバーに対するサンプル・リクエストを示します。
curl -i -H "Content-Type: application/x-www-form-urlencoded;charset=UTF-8" -H "X-OAUTH-IDENTITY-DOMAIN-NAME: SSOLink" --request POST http://<ManagedServerHost>:<ManagedServerPort>/oauth2/rest/token -d 'grant_type=PASSWORD&scope=SSOLink.link1&client_assertion=<ClientAssertionTokenValue>&client_assertion_type=JWT_BEARER&username=weblogic&password=welcome1'
ノート:
-
client_assertion_typeに使用できる値は、JWT_BEARERおよびurn:ietf:params:oauth:client-assertion-type:jwt-bearerです
-
redirect_uriは、2-leggedフロー用ではありません。
-
scopeは、2-leggedフローのオプションです。指定しない場合、クライアントに関連する(クライアントの登録中に指定された) defaultScopeを使用してアクセス・トークンが生成されます。
3-leggedフローを実現するためには、続行する前にOAMサーバーとWebゲートの両方でいくつかの手動ステップを実行する必要があります。承認ページと承認者ページは、OAMを使用して保護する必要があります。承認ページをカスタマイズする場合、Webゲートで保護する必要があります。
-
OAMサーバー - 作成されたアプリケーション・ドメインで、指定されたステップの説明に従っていくつかの3-leggedリソースを追加する必要があります。
-
Webゲート - この項の説明に従ってmod_wl_ohs.confを変更します。
OAMサーバー側で実行するステップ
-
3-leggedの設定の一環として追加するすべてのリソースのリスト。それぞれのリソースの詳細は、ステップ2を参照してください。
図all_resources.pngの説明 -
リソース"/oauth2/rest/approval"を作成します。これは、Webゲートで保護する必要があります。
図3legged11.pngの説明 -
即時利用可能な承認ページであるリソース"/oam/pages/consent.jsp"を作成します。カスタム承認ページを使用する場合、それはWebゲートで保護し、ここで適切なリソースを追加する必要があります。
図consent_resource.pngの説明 -
リソース"/oauth2/rest/**"を作成し、「保護レベル」を
「除外」
としてマークします。
図3legged3.pngの説明 -
リソース"/oam/**"を作成し、「保護レベル」を
「除外」
としてマークします。
図oam_resource.pngの説明
Webゲート側で実行するステップ
<OHS_HOME>/user_projects/domains/base_domain/config/fmwconfig/components/OHS/<ohs instance name>
の場所にあるmod_wl_ohs.confファイルを開いて更新し、次のエントリを追加します。
<Location /oauth2> SetHandler weblogic-handler WebLogicHost <Managed Server Host Name> WebLogicPort <Managed Server Port> ErrorPage http:/WEBLOGIC_HOME:WEBLOGIC_PORT/ </Location> <Location /oam> SetHandler weblogic-handler WebLogicHost <Managed Server Host Name> WebLogicPort <Managed Server Port> ErrorPage http:/WEBLOGIC_HOME:WEBLOGIC_PORT/ </Location>
3-leggedフロー
-
ブラウザ・リクエストの認可コードの使用
次に、サーバーに対するサンプル・リクエストを示します
http://<OHS Hostname>:<OHS Port>/oauth2/rest/authz?response_type=code&client_id=TestClient2&domain=TestDomain1&scope=TestRS.scope1+TestRS.scope2+TestRS.scope3&state=xyz&redirect_uri=http://localhost:8080/SampleTest/index.jsp
-
認可コードを使用したアクセス・トークンの生成
次に、サーバーに対するサンプル・リクエストを示します
curl --request POST \ --url http://<ManagedServerHost>:<ManagedServerPort>/oauth2/rest/token --header 'authorization: Basic U1NPTGlua0NsaWVudDp3ZWxjb21lMQ==' --header 'cache-control: no-cache' --header 'content-type: application/x-www-form-urlencoded' --header 'x-oauth-identity-domain-name: SSOLink' --data grant_type=AUTHORIZATION_CODE&code=bnAreDZVMUxEemZtZmJPUEE2U1N2QT09fmVBUVJZYnFtYmZFSU1EaUFpSktvQjVwQ0ZGQm4xV1R4dmJrekp0MTdDZXdPYjJFNjEwVkdhZlN3VWJjTWcvRUpwL3RqWERUZWliZWdUSzZPQkxQNktwQk03c0ZKMEV1NmN3SmxwbGl5b1U4MnZ6S1pXRFB6ekdiU1k3V3FEZ3lLSjgxM0NwUGNwUjk1eXI5enRKb0ZLb1VVZ0hqNm53TkVFTEpKMmtKNmY3b1ZHWDFtcFkvL1haMUs4N0xiRGlnbkFwTWpHd1J5QjVuZkdxTzh4U01hamdWZnNmT3doSlo1SS9KY3NtOGNaQkJxMDd3SzgrWXBIcVYxYlgxYzFLSWhubW5MWndZQTg5ZnV0aU1Kam54bytZaGZhbW5IK2xrNjFBYVhxOHB5SEdENG5SRzJ2aytDcjRHR1g2OWZFbTdT&redirect_uri=http%3A%2F%2Fredirect_uri'
アクセス・トークンの検証
curl -i -H "X-OAUTH-IDENTITY-DOMAIN-NAME: SSOLink" --request GET "http://<ManagedServerHost>:<ManagedServerPort>/oauth2/rest/token/info?access_token=<AccessToken>"