はじめに
この記事ではOracle Integration Cloud(以下略OIC)で公開されているREST APIをOAuth 2.0認証で実行する手順についてまとめます。
事前準備
-
OICのプロビジョニングおよびユーザー・ロール設定が完了していること
https://docs.oracle.com/ja-jp/iaas/integration/index.html -
Identity Domainで機密アプリケーションの作成が可能なロールを持つアカウントがあること
Identity Domainで機密アプリケーションを作成する
メニューからドメインを開きます。
任意のドメインの詳細を開きます。
統合アプリケーションを開きます。
「アプリケーションの」追加をクリックします。
機密アプリケーションを選択し、「ワークフローの起動」をクリックします。
任意の名前を入力し、「送信」をクリックします。
機密アプリケーションでOAuth構成を設定する
以下の画面に遷移するので、「OAuth構成」タブを開きます。
「OAuth構成の編集」をクリックします。
クライアント構成の「このアプリケーションをクライアントとして今すぐ構成します」にチェック
許可される権限付与タイプは「クライアント資格証明」にチェックします。
下にスクロールし、クライアントIPアドレスを「任意の場所」、トークン発行ポリシーを「機密」にチェックします。
下にスクロールし、リソースの追加のトグルを切り替えて、「スコープの追加」をクリックします。
OICのインスタンスが表示されるのでチェックして、「追加」をクリックします。
追加すると以下のようになります。
ここで追加されたスコープの「...urn:opc:resource:consumer::all」の方は後で使うのでどこかにコピーしておきます。
次にアプリケーション・ロールの追加のトグルを切り替えます。
ここは別の画面で設定するので、切り替えるだけでOKです。追加のボタンを押してOAuthの編集を終わります。
次にOracle Cloudサービスのタブを開きます。
任意のOICのインスタンスをクリックします。
アプリケーション・ロールのタブをクリックします。
Service Developerの三点リーダから「アプリケーションの管理」をクリックします。
「アプリケーションの割当て」をクリックします。
前の手順で作成した機密アプリケーションを選択して、割当てします。
設定は以上で完了したので、統合アプリケーションタブに戻って、三点リーダから「アクティブ化」をクリックします。
必要な情報の収集
次にクライアントへアクセスしてtokenを取得するために必要な情報を収集します。
-
クライアントID、クライアント・シークレット
クライアントID、クライアント・シークレットは機密アプリケーションのOAuth構成の画面から確認できます。
-
スコープ
スコープは既に前の手順で確認しましたが、機密アプリケーションのOAuthの構成の編集時に追加されたスコープの「...urn:opc:resource:consumer::all」の文字列です。
これでIdentity Domain側の設定が完了しました。
ShellからOICの実行
最後に実行します。Cloud Shellなどのターミナルに以下のシェル・スクリプトを張り付けて実行します。このサンプルではRESTアダプターをトリガとした統合アプリケーションを呼んでいます。同じ方法でこちらにあるREST APIを実行することも可能です。OIC_ENDPOINTは実行したいOICのREST APIのエンドポイントを設定します。
かいつまんで説明すると、3. トークン取得
の部分でIDCSドメインに対してtokenを取得し、そのtokenを使って 4. OIC統合フロー呼び出し
でOICの統合アプリケーションをREST APIで呼び出しています。
#!/bin/bash
# === 1. 設定(あなたの値に置き換えてください) ===
IDCS_DOMAIN="<ドメインURL>"
CLIENT_ID="<クライアントID>"
CLIENT_SECRET="<クライアント・シークレット>"
SCOPE="<スコープ>"
# OIC統合フローのRESTトリガーURL(https://... で始まる完全URL)
OIC_ENDPOINT="<実行するOICのREST APIのエンドポイント>"
# === 2. base64改行なしで認証文字列を作成 ===
BASIC_AUTH=$(echo -n "${CLIENT_ID}:${CLIENT_SECRET}" | base64 -w 0)
# === 3. トークン取得 ===
echo "🔐 Access tokenを取得中..."
TOKEN_RESPONSE=$(curl -s -X POST "${IDCS_DOMAIN}/oauth2/v1/token" \
-H "Authorization: Basic ${BASIC_AUTH}" \
-H "Content-Type: application/x-www-form-urlencoded;charset=UTF-8" \
-d "grant_type=client_credentials&scope=${SCOPE}")
ACCESS_TOKEN=$(echo "$TOKEN_RESPONSE" | jq -r '.access_token')
if [[ -z "$ACCESS_TOKEN" || "$ACCESS_TOKEN" == "null" ]]; then
echo "❌ トークン取得に失敗:"
echo "$TOKEN_RESPONSE"
exit 1
fi
echo "✅ トークン取得成功"
# === 4. OIC統合フロー呼び出し ===
echo "🚀 OIC統合フローを呼び出します..."
curl -X POST "${OIC_ENDPOINT}" \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
-H "Content-Type: application/json"
以上です。