はじめに
Identity Cloud Service(以後、IDCS) は、Oracle Cloud(OCI)で提供されているIDaaS(Identity as a Service)で、シングル・サインオン(SSO)や、セキュリティの強化機能として多要素認証、またActive Directory とのユーザー同期などを実現可能な認証・認可サービスです。
一方でOracle Application Express(以後、APEX)は、その名のとおり素早くローコードのアプリケーションを開発できるプラットフォームを提供しています。
今回はIDCSとAPEXアプリをSSOするための素晴らしい技術ブログが見つかったので、こちらを実際にやってみます。
Integrating SSO between APEX Cloud and Identity Cloud Service the Easy Way
この記事のよいところ:
- APEXの無償環境で構築済みAPEXアプリを使用。素早く連携を試せる。
- Step by Step の解説で、手順が容易。
- OAuth の解説リンクもある。
準備
APEXサンプルアプリを選択しインストールする
既にサインイン可能なAPEXアプリケーションをお持ちであれば、準備はスキップして次章のSSO設定から始めてください。
APEXサインインページ へ移動し、**[無償で開始]を選択します。次に[無償ワークスペースのリクエスト]**をクリックします。
名前や、電子メール、ワークスペース名等の必要情報を入力しワークスペースをリクエストします。
ワークスペースをアクティベートするための電子メールが届くので、[Create Workspace] をクリックしワークスペースを作成します。
続けてパスワードを設定しサインインします。
サインインできたら、**[アプリケーション・ギャラリ]**へ移動し、Group Calendar を検索します。
Group Calendarをインストールします。
管理アイコンをクリックし、アプリケーションのロック解除をおこないます。
Playボタンをクリックし、Group Calender にサインインします。
Group Calendar にサインインできました!
このアプリをIDCSとシングルサインオンするためには、サインイン時のURLに含まれる情報が必要です。後述のIDCSのアプリケーション登録時に使用するため、サインイン時のURLはアプリケーションIDまで含めて保持しておいてください。以下の例では 92476 がアプリケーションIDに該当します
例) https://apex.oracle.com/pls/apex/idcs_apex-ws/r/92476/ --- 以降は省略 ----
SSO設定
IDCSにAPEXアプリを追加登録
前提
- IDCSのテナントと管理者権限が必要です。
- テナントについて
URLパラメータ https://idcs-.identity.oraclecloud.com の は、テナント用に自動的に作成される一意の識別子を意味します。
例) https://idcs-8a68f8f344c749ad91ee182ee84f33das.identity.oraclecloud.com
ここでは、
8a68f8f344c749ad91ee182ee84f33das がテナントの識別子を表します。
設定の方式
- IDCSの機密アプリケーション(Confidential Application)を設定しAPEXアプリを登録します。
- OpenID Connectプロトコルを介してOAuth2クライアントとしてAPEXアプリ(Group Calander)とSSOします。
機密アプリケーションの追加
1. 詳細の設定
アプリケーションの詳細項目を入力します。
[名前] 任意の名前を入力
[アプリケーションURL] APEXアプリケーション(Group Calendar)を作成した際に保持しておいたURLの情報をベースに、アプリケーションへサインインするためのURLを指定します。
例) https://apex.oracle.com/pls/apex/f?p=92476
補足)APEX Syntax の詳細情報は、以下を参照ください。
アプリケーション・ページURLについて
2.クライアントの設定
続けて、クライアント項目を設定します。
認可コード チェックします。
[リダイレクトURL] 以下を指定
https://apex.oracle.com/pls/apex/apex_authentication.callback
[ログアウト後のリダイレクトURL] アプリケーションURLを指定
例) https://apex.oracle.com/pls/apex/f?p=92476
3.リソースの設定
4.Web層ポリシーの設定
5.認可の設定
終了 をクリックすると、アプリケーションが追加された とのメッセージが表示される。
クライアントID と、クライアント・シークレットは保存しておきます。
以下のようにIDCSのアプリケーションへ機密アプリケーションが作成され登録が完了しました。
APEXの設定
1. APEXアプリにWeb資格証明を作成
Web資格証明 をクリックし、作成 へ進みます。
[名前] 任意の名前を入力
[認証タイプ] 基本認証を選択
[クライアントIDまたはユーザー名] IDCSに機密アプリケーションを追加した際に保持しておいた、クライアントIDを貼り付けます。
[クライアント・シークレットまたはパスワード] IDCSに機密アプリケーションを追加した際に保持しておいた、クライアント・シークレットを貼り付けます。
[クライアント・シークレットまたはパスワードの確認] IDCSに機密アプリケーションを追加した際に保持しておいた、クライアント・シークレットを貼り付けます。
2. 認証スキームの作成
アプリケーション・ビルダー 画面から Group Calendar の編集(ペンのマーク)を選択します。
共有コンポーネント をクリックし、セキュリティ項目から認証スキームを選択
続けて、認証スキーム を作成します。
[名前] 任意の名前を入力
[スキーム・タイプ] ソーシャル・サインインを選択
[資格証明ストア] IDCS Web Credentials を選択
[認証プロバイダ] OpenID Connect プロバイダ を選択
[検出URL] https://idcs-.identity.oraclecloud.com/.well-known/openid-configuration を入力
例) https://idcs-8a68f8f344c749ad91ee182ee84f33da.identity.oraclecloud.com/.well-known/openid-configuration
[有効範囲] profile を選択
[ユーザー名] sub を選択
[ユーザー名の大文字への変換] いいえ を選択
作成された認証スキーマをクリックし、ログアウト後URLにURLを追加し、変更の更新をします。
[URL] IDCSのクライアント設定時の[ログアウト後のリダイレクトURL]と一致する必要があります。
例) https://apex.oracle.com/pls/apex/f?p=92476
動作確認
SSOの設定がすべて完了したので、APEXアプリケーション(Group Calender)にアクセスしてSSOが有効になるかを確認します。
ブラウザから Group Calender のアプリケーション番号を含む URL でアクセスします。
例) https://apex.oracle.com/pls/apex/f?p=92476
IDCSのサインイン画面が表示されて、SSOの設定が有効になっていることが確認できました。
ユーザー名、パスワードを入力すると、IDCSの認証に成功し Group Calneder が表示されました。右上端にはIDCSと同じユーザー名が表示されています。
IDCS と APEX の SSO設定が完了しました!