Oktaを使ったSAMLのシングル・サインオンの設定ができたので、さらに追加の構成を確認してみました。
OktaのグループをAPEXのダイナミック・グループとする
Okta側でユーザーが所属しているグループを、APEXアプリケーションのサインイン時にダイナミック・グループとして登録します。結果として、Okta側での所属グループでAPEXアプケーションの認可を制御することができます。
Oktaの設定画面を開き、DirectoryのGroupsよりグループを作成します。Everyoneは最初から作成されているので、今回はAdministratorというグループを追加で作成しています。
Add Groupをクリックし、グループAdministratorを作成します。その後、作成されたグループAdministratorを開きます。
グループに含めるユーザーをNot Membersから+をクリックして、Membersへ移動します。
ユーザーをグループに含めたら、Saveをクリックします。
サインインの際に、Okta(IdP)からSP(APEX)に送信されるレスポンスに、グループの情報を含めます。ApplicationのSAML Settingsに含まれるGROUP ATTRIBUTE STATEMENTSに設定を追加します。
Applicationsを開いて、作成済みのSP(前回の記事ではapexとして作成)を開きます。GeneralタブのSAML SettingsのEditをクリックします。
General Settingsは変更せず、Nextをクリックします。
次に開く画面のGroup Attribute Statements (optional)にて、Nameにgroups、Name formatをBasic、Filterは正規表現と一致を選択して.*を指定します。
設定を行った後にPreview the SAML Assertionsをクリックし、設定した結果を確認します。
Assertionの内容が表示されます。NameIDとして表示されているユーザーが所属しているグループが、Attributeとして含まれていることを確認します。
Okta側で必要な変更は以上になります。Nextをクリックしてこの画面の変更を確定し、最後にSaveを実行して変更を保存します。
続いて、Oktaが送信してくるレスポンスからグループを取り出し、ダイナミック・グループを設定する処理をAPEX側に設定します。
ダイナミック・グループを設定するコードは以下になります。
APEXアプリケーションのSAMLサインインの認証スキームを開き、ソースのPL/SQLコードに上記のコードを記載します。
ログイン・プロセスの認証後のプロシージャ名に、ソースに記述したプロシージャassign_dynamic_groupsを設定します。
以上で、APEXアプリケーション側の設定も完了です。
ダイナミック・グループが正しく設定されているか確認するために、SAML認証の確認のために作成したアプリケーションsamltestに、対話モード・レポートのリージョンを作成します。
識別のタイトルはダイナミック・グループとします。ソースの表名にAPEXの標準ビューAPEX_WORKSPACE_SESSION_GROUPSを指定します。
対話モード・レポートを追加したので、アプリケーションを実行します。Oktaでサインインしたのち、アプリケーションのホーム・ページが表示されます。
Group NameとしてAdministratorおよびEveryoneがリストされていれば、正しく設定できています。
シングル・サインアウトを設定する
アプリケーションからサインアウトを実行します。
Oktaではサインアウトがエラーになり、以下の画面が表示されます。
このエラーを回避するために、Okta側でシングル・サインアウトの設定を行います。
アプリケーションのSAML Settingsを編集します。Advanced Settingsを開き、Enable Single LogoutのAllow application to initiate Single Logoutにチェックを入れます。Single Logout URL、SP Issuer共に、APEX側のSAMLコールバックURLを設定します。apex_authentication.saml_callbackで終わるURLで、このアプリケーションのSingle sign on URLおよびAudience URI(SP Entity ID)として設定しているURLと同一のURLです。
Signature Certificateとして、APEX側の内部およびワークスペース・アプリケーション用のSAML: APEX属性の証明書として設定した証明書を設定します。以前の記事通りの手順であれば、cert-test.pemとして生成した証明書になります。
Okta側で生成されたSingle Logout URLを確認します。アプリケーションのSign Onタブを開いて、SAML SetupのView SAML setup instructionsを開きます。
②のIdentity Provider Single Logout URLをコピーし、APEX側に設定します。
APEXの認証制御のSAMLの設定画面を開き、一番下にあるサインアウトURLに上記のURLを設定します。
以上でシングル・サインアウトの設定は完了です。
APEXアプリケーションからサインアウトを実行すると、Oktaのログイン画面に戻ります。
Oracle APEXのSAML認証でOktaをIdPに使用するにあたって、利用可能な追加設定の説明は以上になります。
Oracle APEXのアプリケーション作成の参考になれば幸いです。
完