3.4.7.3.6 SAMLサインインの編集

認証をSecurity Assertion Markup Language (SAML)のサインイン認証スキームに委任します。

3.4.7.3.6.1 SAMLサインインについて

SAMLサインイン認証について学習します。

Oracle APEXでは、Security Assertion Markup Language (SAML)の使用がサポートされています。SAMLは、Webのソフトウェア・エンティティの間でセキュリティ情報をやり取りするためのXMLベースのプロトコルです。SAMLセキュリティは、アサーション側と依存側の対話に基づいています。SAMLは、シングル・サインオン機能を提供します。1つの場所で認証されたユーザーは、あらためてログインしなくても、別の場所のサービス・プロバイダにアクセスできます。

ノート:

SAMLのサポートには、Oracle Database 19c (データベース・リリース更新19.9.0.0.0以降)またはOracle Database 23aiが必要です。データベースがこれらの要件を満たしていない場合、SAMLサインイン認証スキームは表示されません。

3.4.7.3.6.2 SAML使用時のレスポンス署名について

SAMLを使用する場合の認証レスポンス署名要件について説明します。

Oracle APEXでは、アイデンティティ・プロバイダによってSAMLアサーションとSAMLレスポンスの両方にデジタル署名される必要があります。一般的に、アイデンティティ・プロバイダは、デフォルトではSAMLアサーションにのみ署名します。SAMLアサーションのみ署名されている場合、APEXでは、パラメータの値が無効ですというエラーが表示されてSAMLペイロードが拒否されます。SAMLアサーションとSAMLレスポンスの両方がアイデンティティ・プロバイダによって署名されていることを確認する必要があります。

3.4.7.3.6.3 SAML使用時のオリジン間リソース共有について

SAML使用時のオリジン間リソース共有について学習します。

SAML認証エンド・ユーザー・フローでは、Oracle REST Data Services (ORDS)で、アイデンティティ・プロバイダからOracle APEXへのクロスオリジン・リクエストが許可される必要があります。デフォルトでは、ORDSで、Oracle APEXに対するものを含め、そのPL/SQLゲートウェイへのクロスオリジン・リクエストは許可されていません。security.externalSessionTrustedOrigins構成パラメータを設定することで、信頼できるオリジンとして自分のアイデンティティ・プロバイダを指定するように、ORDSを構成する必要があります。

参照:

Oracle REST Data Services開発者ガイドオリジン間リソース共有機能

3.4.7.3.6.4 SAMLサインインの構成

インスタンスのSAMLサインイン認証スキームを編集します。

SAMLサインインを編集するには、次の手順を実行します。

  1. Oracle APEX管理サービスにサインインします。
  2. 「インスタンスの管理」をクリックします。
  3. 「インスタンスの設定」で、「セキュリティ」をクリックします。
  4. 「認証制御」で、「開発環境認証スキーム」までスクロールします。
    「ステータス」列に、認証スキームが「カレント」と指定されているかどうかが示されます。
  5. 「SAML」を見つけ、「編集」をクリックします。
    「スキームの編集」ページが表示されます。
  6. 「カレント・スキームにする」をクリックして、アプリケーションでこの認証スキームを使用してユーザーを識別および検証するようにします。
  7. 「認証スキームの編集」の下で、次の手順を実行します。
    • PL/SQLコード - 認証前および認証後のエントリ・ポイント用のプロシージャを含む、コードのPL/SQL無名ブロックを入力します。パフォーマンスを向上させるために、このコードをデータベース内のPL/SQLパッケージに格納することもできます。
    • 認証前のプロシージャ名 - ログイン・ページの送信後および資格証明の検証の直前に実行するプロシージャの名前を指定します。このプロシージャは、PL/SQLコード属性で、またはデータベース内で定義できます。

      ユーザー資格証明チェックがOracle APEXの外部で実行される認証スキームでは、通常、認証前プロシージャは実行されません。例として、HTTPヘッダー変数、Oracle Application Server Single Sign-On、およびAPEX_AUTHENTICATION.LOGINではなくAPEX_AUTHENTICATION.POST_LOGINを使用するカスタム認証スキームなどがあります。

    • 認証後のプロシージャ名 - 認証ステップ(ログイン資格証明の検証)の後にOracle APEXのLOGINプロシージャによって実行されるプロシージャの名前を指定します。LOGINプロシージャでは、このコードは、Cookieの設定やセッションの登録などの通常作業の実行後(ただし、目的のアプリケーション・ページにそれをリダイレクトする前)に実行されます。このプロシージャは、PL/SQLコード属性で、またはデータベース内で定義できます。
  8. 「内部およびワークスペース・アプリケーション用のSAML: APEX属性」の下で、次の手順を実行します。
    • アプリケーションのSAMLの有効化 - ワークスペース・アプリケーションでSAML認証を使用できるようにする場合は、有効にします。なお、内部アプリケーションに対して他の認証スキームを有効にできますが、この属性が有効になっている場合は、アプリケーションで引き続きSAMLが使用されます。
    • ユーザー名属性 - SAMLレスポンスに、ユーザーに関する追加属性を含めることができます。設定すると、APEXで、その属性の値がユーザー名として使用されます。デフォルトで、APEXではアサーション・サブジェクトのNameID属性が使用されます。
    • 名前IDフォーマット - NameID属性に必要な書式設定を入力します。空の場合、APEXでは、urn:oasis:names:tc:SAML:2.0:nameid-format:persistentになります。
    • 発行者 - Oracle APEXが送信するIssuer属性を入力します。デフォルトでは、この属性にコールバックURL (https://apex.example.com/ords/apex_authentication.saml_callback)が設定されますが、通常はこれで十分です。
    • 証明書 - APEX側のプライマリ証明書を入力します。
    • 秘密キー - APEX側の秘密キーを入力します。なお、APEXでは既存の秘密キーは表示されませんが、新しい秘密キーを入力できます。
    • 代替証明書 - APEX側の代替証明書を入力します。
    • 代替秘密キー - APEX側の代替秘密キーを入力します。なお、APEXでは既存の秘密キーは表示されませんが、新しい秘密キーを入力できます。
    • サポートされるコールバックURL - このAPEXインスタンスが複数のドメインを使用した統合をサポートする場合、APEXコールバックURLを(改行で区切って)入力します。ログインAPEXのアイデンティティ・プロバイダにリダイレクトすると、認証リクエストでAssertionConsumerServiceIndex="nnn"が送信されます(nnnはこのリストの現在のコールバックURLの0から開始するインデックスとなります)。APEXインスタンスが単一のドメインとの統合のみをサポートする必要がある場合、この属性はオプションです。
  9. 「内部およびワークスペース・アプリケーション用のSAML: アイデンティティ・プロバイダ属性」の下で、次の手順を実行します。
    • 発行者: アイデンティティ・プロバイダのメタデータから発行者属性を入力します。たとえば:

      https://login.example.com/oam/fed

    • 署名証明書 - アイデンティティ・プロバイダのメタデータから証明書を入力します。
    • 代替署名証明書 - アイデンティティ・プロバイダのメタデータから代替証明書を入力します。
    • サインインURL - アイデンティティ・プロバイダのサインインURLを入力します。
    • サインアウトURL - アイデンティティ・プロバイダのサインアウトURLを入力します。空の場合、デフォルトではこのサインインURLに設定されます(通常はこれで十分です)。
  10. 変更を保存するには、「変更の適用」をクリックします。

ヒント:

APEXインスタンスで、前提条件となるOracle Databaseリリースおよびデータベース・リリース更新を使用していて、SAMLサインイン認証スキームが表示されない場合は、データベース(またはプラガブル・データベース)にSYSDBAとして接続しているときに、次を実行します。

set serveroutput on
exec sys.validate_apex