35.5 OAuth 12cのランタイムREST API

OAuthのランタイムREST APIでは、新しい12c OAuthサーバーで2-leggedおよび3-leggedのOAuthサービス・フローのRESTコールが提供されます。これらの項では、リソース・アクセス・トークンの取得方法を示すRESTリクエストのサンプルについて説明します。

アクセス・トークンの作成

新しいエンドポイントは、次のとおりです。
http://<ManagedServerHost>:<ManagedServerPort>/oauth2/rest/token
2-leggedフロー
  1. リソース所有者の資格証明の使用

    次に、サーバーに対するサンプル・リクエストを示します。

    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: クライアントが属しているアイデンティティ・ドメイン。

  2. クライアント資格証明の使用

    次に、サーバーに対するサンプル・リクエストを示します。

    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'
  3. 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>'
  4. リフレッシュ・トークンの使用

    次に、サーバーに対するサンプル・リクエストを示します。

    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>'
  5. 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フロー — プロセス

3-leggedフローを実現するためには、続行する前にOAMサーバーとWebゲートの両方でいくつかの手動ステップを実行する必要があります。承認ページと承認者ページは、OAMを使用して保護する必要があります。承認ページをカスタマイズする場合、Webゲートで保護する必要があります。

  • OAMサーバー - 作成されたアプリケーション・ドメインで、指定されたステップの説明に従っていくつかの3-leggedリソースを追加する必要があります。

  • Webゲート - この項の説明に従ってmod_wl_ohs.confを変更します。

OAMサーバー側で実行するステップ

  1. 3-leggedの設定の一環として追加するすべてのリソースのリスト。それぞれのリソースの詳細は、ステップ2を参照してください。

    all_resources.pngの説明が続きます
    図all_resources.pngの説明
  2. リソース"/oauth2/rest/approval"を作成します。これは、Webゲートで保護する必要があります。

    3legged11.pngの説明が続きます
    図3legged11.pngの説明
  3. 即時利用可能な承認ページであるリソース"/oam/pages/consent.jsp"を作成します。カスタム承認ページを使用する場合、それはWebゲートで保護し、ここで適切なリソースを追加する必要があります。

    consent_resource.pngの説明が続きます
    図consent_resource.pngの説明
  4. リソース"/oauth2/rest/**"を作成し、「保護レベル」「除外」としてマークします。

    3legged3.pngの説明が続きます
    図3legged3.pngの説明
  5. リソース"/oam/**"を作成し、「保護レベル」「除外」としてマークします。

    oam_resource.pngの説明が続きます
    図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フロー

  1. ブラウザ・リクエストの認可コードの使用

    次に、サーバーに対するサンプル・リクエストを示します

    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 
  2. 認可コードを使用したアクセス・トークンの生成

    次に、サーバーに対するサンプル・リクエストを示します

    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>"