3.4.7.3.4 LDAPディレクトリの編集

インスタンスのLDAPディレクトリ認証スキームを編集します。

ログイン・ページを使用する認証スキームは、Lightweight Directory Access Protocol(LDAP)を使用して、ログイン・ページで送信されるユーザー名およびパスワードを検証するように構成できます。

LDAP資格証明の認証スキームでは、LDAPホスト名、LDAPポート、識別名(DN)文字列、SSLの使用の有無、および完全なDNが必要となり、完全なDNを使用しない場合はオプションで検索フィルタを指定します。オプションの事前処理ファンクションを指定して、APIに渡されるユーザー名の書式設定を調整できます。

LDAPディレクトリを編集するには、次の手順を実行します。

  1. Oracle APEX管理サービスにサインインします。
  2. 「インスタンスの管理」をクリックします。
  3. 「インスタンスの設定」で、「セキュリティ」をクリックします。
  4. 「認証制御」で、「開発環境認証スキーム」までスクロールします。
    「ステータス」列に、認証スキームが「カレント」と指定されているかどうかが示されます。
  5. 「LDAPディレクトリ」を見つけ、「編集」をクリックします。
    「スキームの編集」ページが表示されます。
  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 APEXLOGINプロシージャによって実行されるプロシージャの名前を指定します。LOGINプロシージャでは、このコードは、Cookieの設定やセッションの登録などの通常作業の実行後(ただし、目的のアプリケーション・ページにそれをリダイレクトする前)に実行されます。このプロシージャは、PL/SQLコード属性で、またはデータベース内で定義できます。
  8. 「認証スキーム属性」の下で、次の手順を実行します。

    ヒント:

    属性についてさらに学習するには、フィールドレベル・ヘルプを参照してください。
    • ホスト - LDAPディレクトリ・サーバーのホスト名を入力します。
    • ポート - LDAPディレクトリ・ホストのポート番号を指定します。デフォルトは、389です。
    • SSLの使用 - LDAPディレクトリへのバインドにSSLを使用するかどうかを選択します。認証付きSSLを選択した場合は、Oracle APEXインスタンスに対してウォレットを構成する必要があります。
    • 識別名(DN)文字列 - 完全なDNを使用する場合はDBMS_LDAP.SIMPLE_BIND_Sに完全修飾識別名(DN)文字列を構築するために使用されるパターンを、非完全なDNを使用する場合は検索ベースを入力します。%LDAP_USER%をユーザー名のプレースホルダとして使用します。次に例を示します。

      完全なDN:

      cn=%LDAP_USER%,l=amer,dc=yourdomain,dc=com

      非完全なDN(検索ベース)

      dc=yourdomain,dc=com

    • 検索フィルタ - 完全な識別名(DN)を使用しない場合に、検索フィルタを入力します。%LDAP_USER%をユーザー名のプレースホルダとして使用します。たとえば:

      cn=%LDAP_USER%

    • LDAPユーザー名編集ファンクション - ユーザー名をLDAPディレクトリ・エントリまたはLDAPユーザー名に最適な形式に変換するために実行される追加コードを指定できます。バインド変数:USERNAMEには、エンド・ユーザーが指定した名前が含まれます。たとえば、次のコードでは、DN文字列内のすべてのピリオド(".")をアンダースコア("_")に置換する関数がコールされます。

      return apex_custom_auth.ldap_dnprep(p_username => :USERNAME);

      &PRODUCT_NAME.は、認証属性「ユーザー名エスケープ」に基づいて、返されたユーザー名をエスケープします。

    • ユーザー名エスケープ - LDAP識別名内および検索文字列内の%LDAP_USER%を置き換える前に、Oracle APEXによって、ユーザー名内の特殊文字が自動的にエスケープされます。オプションは次のとおりです。
      • 標準 - RFC 4514 (識別名の場合)およびRFC 4515 (検索文字列の場合)に基づいて特殊文字をエスケープします。また、Unicode文字をエスケープします。これは最もセキュアな設定ですが、一部のLDAPサーバーでは問題が発生する可能性があります。

      • 特殊文字のみ - RFC 4514 (識別名の場合)およびRFC 4515 (検索文字列の場合)に基づいて特殊文字をエスケープします。Unicode文字はエスケープしません。

      • エスケープなし - どの文字もエスケープしません。ユーザー名編集ファンクションを使用してすでにユーザー名をエスケープしている場合(apex_escape.ldap_dnまたはapex_escape.ldap_search_filterの使用など)を除き、この設定はセキュアでない可能性があります。

  9. 変更を保存するには、「変更の適用」をクリックします。