OAuth 2.0権限付与の使用
Oracle Integrationの「Oracle Utilitiesアダプタ」でOAuth 2.0権限付与タイプを使用するには、次の前提条件を実行する必要があります。
すべての権限付与の前提条件
使用する権限タイプごとに次のタスクを実行します。
- Oracle Identity Cloud Service URLを取得します。
- Oracle UtilitiesアプリケーションのURLに移動します。 次のようなURLにリダイレクトされます:
https://idcs-c2881.identity.myhost.example.com/ui/v1/signin /signinを/adminconsoleに置き換えて、Oracle Identity Cloud Serviceにアクセスします。たとえば:https://idcs-c2881.identity.myhost.example.com/ui/v1/adminconsoleOracle Identity Cloud Serviceコンソールに再度サインインするように求められます。
- アイデンティティ・ドメイン管理者資格証明を使用してOracle Identity Cloud Serviceコンソールにログインします。
- Oracle UtilitiesアプリケーションのURLに移動します。 次のようなURLにリダイレクトされます:
- Oracle Identity Cloud ServiceのOracle Utilitiesアプリケーションを確認します。
Oracle Utilitiesアプリケーション・インスタンスがプロビジョニングされると、そのアプリケーション・インスタンスに対してOracle Identity Cloud Serviceアプリケーションが作成されます。 アプリケーション名は、次のように構成されます:
product-domaintenantsuffixsequential_numberたとえば:CCS-PRODC12345CMETERDATA0CCS-PRODC12345FIELDSERVICE1- 新しいOAuthクライアント・アプリケーションの作成をリクエストするには、クラウド操作サービス・リクエストを作成し、次の情報を指定します:
- OAuthクライアント・アプリケーションが必要なEnvironment(s) (たとえば、PROD、TEST01、DEV)。
- クライアント名サフィクス: 統合の機能目的を示す可能性がある個別の名前を使用してください。
- インテグレーション・ポイントのわかりやすい説明を指定します。
- クライアント・タイプ(信頼または機密)およびクライアント証明書: 統合要件が信頼できるクライアントを要求する場合があり、外部アプリケーションが独自の証明書を提供する場合もあります。 それ以外の場合、Oracle Identity Cloud Serviceは内部ネイティブ証明書を使用して信頼できるクライアントを作成します。
- 目的の統合のためのOAuthフロー: 現在、クライアント資格証明、JWTアサーションおよび認可コード・フローがサポートされています。 認可コード・フローでは、独自のリダイレクトURLを指定することもできます。
- スコープ: REST APIまたはSOAP API、あるいはREST APIとSOAP APIの両方へのアクセス権を持つOAuthクライアント・アプリケーションを定義できます。
Oracle Utilitiesクラウド操作チームは、サービス・リクエストで指定された入力を使用してOAuthクライアントを作成します。- Oracle Identity Cloud Serviceにログインしてアプリケーションを取得します。
- Oracle Cloud Servicesに移動し、前述の名前を持つアプリケーションを検索してアプリケーションにアクセスします。
- 新しいOAuthクライアント・アプリケーションの作成をリクエストするには、クラウド操作サービス・リクエストを作成し、次の情報を指定します:
リソース所有者のパスワード資格証明の前提条件
次のタスクを実行します。
- Oracle Integrationアプリケーションおよびユーザー・ロールを検証します:
- 「構成」、Oracle Identity Cloud Serviceアプリケーションの「クライアント構成」の順に移動します。
- 「許可された許可タイプ」の「リソース所有者」および「リフレッシュ・トークン」が有効になっていることを確認します。
- 「構成」、Oracle Identity Cloud Serviceアプリケーションの「リソース」の順に移動します。
- 「リフレッシュ・トークンを許可するかどうか」オプションが有効になっていることを確認します。

REST APIまたはSOAP API、あるいはREST APIとSOAP APIの両方にアクセスできるスコープが提供されます。

- 適切なuser(s)を様々なOracle Applicationロールに追加します。 標準/本番構成の場合は、ServiceUserロールを使用します。 (「Oracle Integration Generation 2のプロビジョニングおよび管理」の「Oracle Integration Serviceロール」を参照してください。)
- ユーザーを割り当てるには、アプリケーションの「アプリケーション・ロール」セクションに移動し、AppWebServicesにユーザーを割り当てます。

- クライアント・アプリケーションを構成します。:
- Oracle Identity Cloud Serviceコンソールで、「アプリケーション」セクションに移動し、OAuthユーティリティ接続を使用してOracle Utilitiesアプリケーションを起動できる新しいアプリケーションを作成します。 このアプリケーションを機密アプリケーションとして追加します。
- 「追加」をクリックします。
- 「機密アプリケーション」を選択します。
- 「詳細」ページに入力し、「クライアント」ページに移動します。
- 「クライアント」ページで、「このアプリケーションをクライアントとして構成」を選択し、次を追加します。
- 「リソース所有者」および「リフレッシュ・トークン」 for 「許可された許可タイプ」を選択します。
- 「承認済リソース」セクションで「特定」を選択します。
- 「リソース」セクションの下の「スコープの追加」をクリックします。

- Oracle Utilitiesアプリケーションを検索します。

- REST (/rest/*)またはSOAP(/soap/*) API、あるいはREST APIとSOAP APIの両方(/*)へのアクセスを含むスコープを追加し、>をクリックします。

- 変更を保存します。
- 変更を加えずに残りのウィザード・ページをクリックして、アプリケーションを保存します。
- 使用するアプリケーションをアクティブ化します。
- クライアント・アプリケーションを検証します:
- アクセス・クライアントをフェッチするには、ペイロードでユーザー名とパスワードを使用してOracle Identity Cloud Serviceにリクエストします。
ノート:
レスポンスの一部としてリクエスト・リフレッシュ・トークンをフェッチするには、スコープにoffline_accessを追加します。##Syntax curl -i -H 'Authorization: Basic <base64Encoded_clientid:secret>' -H 'Content-Type: application/x-www-form-urlencoded;charset=UTF-8' --request POST https://<IDCS-Service-Instance>.identity.oraclecloud.com/oauth2/v1/token -d 'grant_type=password&username=<user-name>&password=<password>&scope=<App_Scope>%20offline_access' ###where #### <base64-clientid-secret> - Base 64 encode clientId:ClientSecret #### <username> - user for token needs to be issued (must be in serviceuser role). #### <password> - password for above user #### <app_scope> - Scope added while creating application in client configuration section ##Example curl -i -H 'Authorization: Basic OGQyM...ZDA0Mjcz' -H 'Content-Type: application/x-www-form-urlencoded;charset=UTF-8' --request POST https://<idcs_host>/oauth2/v1/token -d 'grant_type=password&username=sampleUser&password=SamplePassword&scope=https://<Resource_APP_Audience>/rest/*%20offline_access' - レスポンスから
access_tokenおよびrefresh_tokenを取得します。{ "access_token": "eyJ4NXQjG...dfsdfsFgets2ed", "token_type": "Bearer", "expires_in": 3600, "refresh_token": "AQAgY2MzNjVlOTVhOTRh...vM5S0MkrFSpzc=" } - 認可ヘッダーで
access_tokenを使用して、Oracle Utilitiesアプリケーション・エンドポイントを起動します。curl --location --request GET 'https://<Utilities_Application_API_ENDPOINT>' \ --header 'Authorization: Bearer eyJ4NXQjG...dfsdfsFgets2ed' - アクセス・トークンを更新するには、リフレッシュ・トークンを使用してOracle Identity Cloud Serviceにリクエストします。
- レスポンスから
access_tokenおよびrefresh_tokenを取得して、さらに使用します。curl -i -H 'Authorization: Basic <base64-clientid-secret>' -H 'Content-Type: application/x-www-form-urlencoded;charset=UTF-8' --request POST https://<IDCS-Service-Instance>.identity.oraclecloud.com/oauth2/v1/token -d 'grant_type=refresh_token&refresh_token=<refresh_token>' ##Example curl -i -H 'Authorization: Basic OGQyM...ZDA0Mjcz' -H 'Content-Type: application/x-www-form-urlencoded;charset=UTF-8' --request POST https://<IDCS-Service-Instance>.identity.oraclecloud.com/oauth2/v1/token -d 'grant_type=refresh_token&refresh_token=AQAgY2MzNjVlOTVhOTRh...vM5S0MkrFSpzc='
- アクセス・クライアントをフェッチするには、ペイロードでユーザー名とパスワードを使用してOracle Identity Cloud Serviceにリクエストします。
OAuthクライアント資格証明の前提条件
次のタスクを実行します。
- Oracle Utilitiesアプリケーションおよびユーザー・ロールを検証します:
- 「構成」、Oracle Identity Cloud Serviceアプリケーションの「クライアント構成」の順に移動します。
- 「許可された許可タイプ」の「クライアント資格証明」が有効になっていることを確認します。
- 「構成」、Oracle Identity Cloud Serviceアプリケーションの「リソース」の順に移動します。 REST APIまたはSOAP API、あるいはREST APIとSOAP APIの両方にアクセスできるスコープが提供されます。

- 適切なuser(s)を様々なOracle Utilitiesアプリケーション・ロールに追加します。 標準/本番構成の場合は、ServiceUserロールを使用します。 (「Oracle Integration Generation 2のプロビジョニングおよび管理」の「Oracle Integration Serviceロール」を参照してください。)
- ユーザーを割り当てるには、AppWebServicesの下のアプリケーションの「アプリケーション・ロール」セクションに移動します。

- クライアント・アプリケーションを構成します。:
- Oracle Identity Cloud Serviceコンソールで、「アプリケーション」セクションに移動し、OAuthユーティリティ接続を使用してOracle UtilitiesアプリケーションAPIを起動できる新しいアプリケーションを作成します。 アプリケーションは機密アプリケーションとして追加されます。
- 「詳細」セクションに入力し、「クライアント」セクションに移動します。
- 「クライアント」ページで、「このアプリケーションをクライアントとして構成」を選択し、次のように入力します:
- 「許可された許可タイプ」リストから「クライアント資格証明」を選択します。
- 「トークン発行ポリシー」セクションの「承認済リソース」領域で「特定」を選択します。
- 「リソース」セクションの下の「スコープの追加」をクリックします。
- Oracle Utilitiesアプリケーションを検索します。

- REST APIまたはSOAP API、あるいはREST APIとSOAP APIの両方へのアクセスを含むスコープを追加し、>をクリックします。

- 変更を保存します。
- 変更を加えずに残りのウィザード・ページをクリックして、アプリケーションを保存します。
- 使用するアプリケーションをアクティブ化します。
次のステップは、適切なOracle Utilities Cloud Service (Oracle Utilities Meter Solution Cloud Serviceなど)にアプリケーション・ユーザーを作成することです。 適切なOracle Utilities Cloud Serviceアプリケーションにアクセスし、ユーザー・ポータルにナビゲートします。- 上で作成したOAuthクライアントに対応する新しいユーザーを作成します:
- ユーザーのログインIDとしてOAuthクライアントIDを入力します。
- 「ユーザー・タイプ」ドロップダウン・リストから「OAuthクライアント」を選択します。
- 統合に適切な機能へのアクセス権を提供する「ユーザー・グループ」を割り当てます。
- 作成したユーザーに「作業予定ロール」および適切な「アクセス・セキュリティ」を割り当てます。
OAuthクライアント資格証明を使用する準備ができました。
- クライアント・アプリケーションを検証します。
- ペイロード内のクライアントのクライアントIDおよびクライアント・シークレットを使用してOracle Identity Cloud Serviceにリクエストを行うアクセス・クライアントをフェッチします。
##Syntax curl -i -H 'Authorization: Basic <base64Encoded_clientid:secret>' -H 'Content-Type: application/x-www-form-urlencoded;charset=UTF-8' --request POST https://<IDCS-Service-Instance>.identity.oraclecloud.com/oauth2/v1/token -d 'grant_type=client_credentials&scope=<App_Scope>' ###where #### <base64-clientid-secret> - Base 64 encode clientId:ClientSecret #### <app_scope> - Scope added while creating application in client configuration section ##Example curl -i -H 'Authorization: Basic OGQyM...ZDA0Mjcz' -H 'Content-Type: application/x-www-form-urlencoded;charset=UTF-8' --request POST https://<idcs_host>/oauth2/v1/token -d 'grant_type=client_credentials&scope=https://<Resource_APP_Audience>/rest/*' - レスポンスから
access_tokenを取得します。{ "access_token": "eyJ4NXQjG...dfsdfsFgets2ed", "token_type": "Bearer", "expires_in": 3600 } - 認可ヘッダーで
access_tokenを使用して、Oracle UtilitiesアプリケーションAPIを起動します。curl --location --request GET 'https://<Utilities_Application_API_ENDPOINT>' \ --header 'Authorization: Bearer eyJ4NXQjG...dfsdfsFgets2ed' - アクセス・トークンが期限切れになったときに更新するには、Oracle Identity Cloud Serviceに対して同じリクエストを行います。
- ペイロード内のクライアントのクライアントIDおよびクライアント・シークレットを使用してOracle Identity Cloud Serviceにリクエストを行うアクセス・クライアントをフェッチします。


