Identity Domainでは、SAMLやOAuthなどの技術を使用することで、様々なアプリケーションとシングル・サインオンを実装することができます。 本チュートリアルでは、Oracle Application Express(APEX)で作成したアプリケーションとIdentity Domainの認証連携、およびIdentity Domainのグループに基づくアクセス制限(認可)の実装手順を紹介します。

本チュートリアルを完了すると、Identity DomainのユーザーはIdentity Domainのユーザー名とパスワードでAPEXアプリケーションにアクセスすることができるようになります。 また、Identity Domainのユーザーが属しているグループに基づいて、APEXアプリケーション内でアクセスできるページを制御することができるようになります。

所要時間 : 約1時間

前提条件 :

注意 : ※チュートリアル内の画面ショットについてはOracle Cloud Infrastructureの現在のコンソール画面と異なっている場合があります。


1. APEXアプリケーションの作成(任意)

本手順では、APEXアプリケーション内のアクセス制限を実装するため、APEXのサンプルアプリケーションをインストールします。 既存のアプリケーションがある場合は、本手順は実施しなくても問題ありません。

任意のAPEXワークスペースにログインします。

画面ショット1

ワークスペースにログインしたら、「アプリケーション・ビルダー」を選択します。

画面ショット2

「作成」ボタンをクリックします。

画面ショット3

「ファイルから」を選択します。

画面ショット4

「コピー・アンド・ペースト」のタブを開き、「販売」のサンプル・データ・セットを選択し、「次」ボタンをクリックします。

画面ショット5

データのロード画面にて、任意の表名を入力し、「データのロード」ボタンをクリックします。

画面ショット6

データがロードされ、表が作成されたら「アプリケーションの作成」ボタンをクリックします。

画面ショット7

アプリケーションの作成画面にて、任意のアプリケーション名を入力します。 機能のセクションで「すべてをチャック」を選択し、「アプリケーションの作成」ボタンをクリックします。

画面ショット8

「アプリケーションの実行」を選択します。

画面ショット9

新しいタブが開き、アプリケーションのログイン画面が表示されます。 ワークスペースにログインしたユーザーのユーザー名とパスワードを入力し、アプリケーションにアクセスできることを確認します。

画面ショット10

以上でサンプルのAPEXアプリケーションの作成は終了です。


2. 機密アプリケーションの登録

続いて、APEXアプリケーションをIdentity Domainに機密アプリケーションとして登録します。 Identity Domainに機密アプリケーションとして登録されたアプリケーションは、シングル・サインオンを構成したり、ユーザーのアクセス制御を実装することができます。

OCIコンソール画面左上のメニュー → アイデンティティとセキュリティ → アイデンティティ → ドメイン → シングル・サインオンを実装したいドメインを選択します。

画面ショット11

アイデンティティ・ドメインの詳細画面のドメイン情報から、「ドメインURL」をコピーし、ローカルPCのメモ帳などにメモします。

※後ほどの手順でドメインURLが必要になります。

画面ショット12

続いて、アイデンティティ・ドメイン詳細画面左下のメニューから「アプリケーション」のタブを選択し、「アプリケーションの追加」ボタンをクリックします。

画面ショット13

表示されたアプリケーションの追加画面で、「機密アプリケーション」を選択し、「ワークフローの起動」ボタンをクリックします。

画面ショット14

機密アプリケーションの追加画面にて、以下情報を入力します。

  • 名前 - 任意 例)APEX
  • アプリケーションURL - APEXアプリケーションのURL(アプリケーション番号まで)例)https://g884b・・・1051.adb.ap-tokyo-1.oraclecloudapps.com/ords/f?p=100

画面ショット15

認証と認可のセクションにて、「権限付与と認可として実施」にチェックを入れ、「次」ボタンをクリックします。

画面ショット16

OAuthの構成画面のクライアント構成にて、「このアプリケーションをクライアントとして今すぐ構成します」にチェックを入れます。

許可される権限付与タイプにて「認可コード」を選択します。

その他、以下情報を入力し、「次」ボタンをクリックします。

  • リダイレクトURL - 対象APEXアプリURLの「fp・・」を「apex_authentication.callback」に変更したURL 例)https://g884b・・・・1051.adb.ap-tokyo-1.oraclecloudapps.com/ords/apex_authentication.callback
  • ログアウト後のリダイレクトURL - 対象APEXアプリのURL 例)https://g884b・・・・1051.adb.ap-tokyo-1.oraclecloudapps.com/ords/f?p=100
  • ログアウトURL - <先程の手順でメモしたアイデンティティ・ドメインのURL>/oauth2/v1/userlogout 例)https://idcs-d0e4・・・・8d9.identity.oraclecloud.com:443/oauth2/v1/userlogout

画面ショット17

ポリシーの構成は「スキップして後で実行」を選択し、「終了」ボタンをクリックします。

画面ショット18

アプリケーションが作成されたら、アプリケーション詳細画面上部の「アクティブ化」をクリックし、アプリケーションをアクティブ化します。

画面ショット19

以上で機密アプリケーションの登録作業は終了です。

アプリケーション詳細画面左下のリソースメニューの「OAuth構成」のタブから、クライアントIDとクライアント・シークレットをコピーし、ローカルPCのメモ帳などにメモします。 ※後ほどの手順で使用します。

画面ショット20


3. グループ作成

本手順では、APEXアプリケーションにアクセスできるIdentity Domainのグループ「APEX_ADMIN」と「APEX_USER」を作成します。

APEX_ADMINグループに属しているユーザーと、APEX_USERグループに属しているユーザーでそれぞれAPEXアプリケーション内でアクセスできるページが異なることを想定します。

3-1. APEX_ADMINグループの作成

アイデンティティ・ドメイン詳細画面左下のメニューから「グループ」を選択し、「グループの作成」ボタンをクリックします。

画面ショット53

グループの作成画面にて、グループ名を入力し、グループに追加するユーザーを選択します。

  • グループ名 - 例)APEX_ADMIN

「作成」ボタンをクリックします。

画面ショット54


3-2. APEX_USERグループの作成

手順3-1と同様に、もう一つグループを作成します。 グループには、手順3-1で作成したグループに追加したユーザーとは異なるユーザーを追加します。

  • グループ名 - 例)APEX_USER

「作成」ボタンをクリックします。

画面ショット55

3-3. 機密アプリケーションへのグループの割当て

アイデンティティ・ドメイン詳細画面のメニューから「アプリケーション」のタブを開き、手順2で登録したAPEXの機密アプリケーションを選択します。

画面ショット56

アプリケーション詳細画面左下のリソースメニューから「グループ」を選択し、「グループの割当て」ボタンをクリックします。

画面ショット57

グループの割当て画面にて、手順3-1,3-2で作成したグループを選択し、「割当て」ボタンをクリックします。

画面ショット58

以上の手順で、Identity Domainに機密アプリケーションとして登録されたAPEXアプリケーションには、本手順で選択されたIdentity Domainのグループに属しているユーザーしかアクセスができなくなります。


4. Web資格証明の作成

APEXのワークスペースにアクセスし、「アプリケーション・ビルダー」を選択します。

画面ショット21

「ワークスペース・ユーティリティ」を選択します。

画面ショット22

「Web資格証明」を選択します。

画面ショット23

Web資格証明の画面にて、「作成」ボタンをクリックします。

画面ショット24

Web資格証明の作成画面にて以下情報を入力し、「作成」ボタンをクリックします。

  • 名前 - 任意 例)Identity Domain Web Credentials
  • 静的識別子 - 任意 例)同上
  • 認証タイプ - 「基本認証」を選択
  • クライアントIDまたはユーザー名 - 手順2の最後にメモしたクライアントIDを入力
  • クライアント・シークレットまたはパスワード - 手順2の最後にメモしたクライアント・シークレットを入力

画面ショット25

以上でWeb資格証明の作成は完了です。


5. 認証スキームの作成

APEXのワークスペースで、シングル・サインオンの構成をするアプリケーションを選択します。

画面ショット26

アプリケーションの「共有コンポーネント」を選択します。

画面ショット27

セキュリティのセクションから「認証スキーム」を選択します。

画面ショット28

認証スキームの画面にて、「作成」ボタンをクリックします。

画面ショット29

「ギャラリからの事前構成済スキームに基づく」が選択されていることを確認し、「次」ボタンをクリックします。

画面ショット30

認証スキームの作成画面にて、以下情報を入力し、「認証スキームの作成」ボタンをクリックします。

  • 名前 - 任意 例)Identity Domain Authentication Schema
  • スキーム・タイプ - 「ソーシャル・サインイン」を選択
  • 資格認証ストア - 手順4で作成したWeb資格証明を選択
  • 認証プロバイダ - 「OpenID Connectプロバイダ」を選択
  • 検出URL - <手順2でメモしたアイデンティティ・ドメインのURL>/.well-known/openid-configuration 例) https://idcs-d0e・・・・8d9.identity.oraclecloud.com:443/.well-known/openid-configuration
  • 有効範囲 - 「profile,groups」を入力
  • ユーザー名 - sub
  • 追加ユーザー属性 - groups

画面ショット31

以上の手順で認証スキームが作成されます。 認証スキームが作成されたら、もう一度、作成した認証スキームをクリックします。

画面ショット32

「ソース」のタブを開き、以下PL/SQL文を入力します。

procedure load_dynamic_groups as
  l_group_names apex_t_varchar2; 
Begin 
-- 
-- add all group name to l_group_names 
-- 
For I in 1..apex_json.get_count(‘groups’) loop
    apex_string.push(
            p_table=> l_group_names,
        p_value => apex_json.get_varchar2(
                         p_path=> 'groups[%d].name’, 
                         p0 => i)); 
end loop; 
-- 
-- save group name in session 
-- apex_authorization.enable_dynamic_groups( 
         p_group_names => l_group_names); 
end; 

画面ショット33

続いて、「ログイン・プロセス」のタブを開き、認証後のプロシージャ名に「load_dynamic_groups」と入力し、「変更の適用」ボタンをクリックします。

画面ショット34

以上の手順で、Identity DomainのユーザーがAPEXアプリケーションにログインすると、同時にユーザーが属しているIdentity Domainのグループの情報が取得されます。


6. 認可の設定

6-1. セキュリティ属性の変更

APEXのワークスペースに戻り、アプリケーションの「共有コンポーネント」を選択します。

画面ショット35

セキュリティのセクションから「セキュリティ属性」を選択します。

画面ショット36

セキュリティのタブの「認可」のセクションで以下を選択し、「変更の適用」ボタンをクリックします。

  • 認可スキーム - 「アプリケーション認可の必要なし」を選択
  • ロールまたはグループ・スキームのソース - 「カスタム・コード」を選択

画面ショット37

以上の手順でセキュリティ属性が変更されます。 画面右上のアプリケーション実行ボタンをクリックします。

画面ショット59

Identity Domainのログイン画面が表示されたら、Identity Domainのアクセス情報(ユーザー名/パスワード)を入力します。 初回ログイン時は、アクセス許可の確認画面が表示されるので、「許可」を選択します。

画面ショット38

APEXアプリケーションに、APEX_ADMINグループに属しているIdentity Domainのユーザー名/パスワードを使用してログインできました。

画面ショット39

APEXワークスペースのトップメニューから「SQLワークショップ」→「SQLコマンド」を選択します。

画面ショット40

以下SQL文を実行し、APEXアプリケーションにログインしているユーザーの情報を取得します。

SELECT * FROM APEX_WORKSPACE_SESSION_GROUPS;

APEXにログインしたユーザーのIdentity Domain上のグループ情報が取得できていることを確認します。

画面ショット41


6-2. 認可スキームの作成

APEXアプリケーションの「共有コンポーネント」を選択します。

画面ショット42

セキュリティのセクションから、「認可スキーム」を選択します。

画面ショット43

「作成」ボタンをクリックします。

画面ショット44

「認可スキームの作成」画面にて、作成メソッドはデフォルトのまま「次」ボタンをクリックします。

画面ショット45

詳細入力画面にて以下情報を入力し、「認可スキームの作成」ボタンをクリックします。

  • 名前 - Identity Domainのグループ名を入力
  • スキーム・タイプ - 「ロールまたはグループ内にある」を選択
  • タイプ - 「カスタム」を選択
  • 名前 - Identity Domainのグループ名を入力 例)APEX_USER
  • スキームの違反時に表示されるエラー・メッセージの指定 - 任意のメッセージを指定 例)Not Authorized

画面ショット46


6-3. ページの設定

アプリケーションの任意のページを選択します。

画面ショット47

画面右に表示される検索ボックスにて「認可」と検索します。

表示された認可スキームで、手順6-2で作成した認可スキームを選択します。

画面ショット48

以上の手順で、該当ページは認可スキームで設定したグループに所属しているユーザーしかアクセスが出来なくなります。


6-4. 動作確認

APEXアプリケーションに、APEX_USERグループに属していないIdentity Domainのユーザーでログインし、Sales検索のページを表示するとエラーになります。

画面ショット49 画面ショット50

一方で、APEX_USERグループに属しているIdentity Domainのユーザーは、APEXアプリケーションのSales検索ページを表示することができます。

画面ショット51

また、ページのセキュリティ設定で、認証スキームを{非APEX_USER}にすることで、APEX_USERグループ以外のグループに属しているユーザーにアクセス権限を付与することも可能です。

画面ショット52

以上で、Identity DomainによるAPEXアプリケーションへのシングル・サインオンおよび認可の設定は終了です。