プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle Identity Managementアプリケーション開発者ガイド
11g リリース1 (11.1.1)
B56242-07
  目次へ移動
目次

前
 
次
 

6 PL/SQLでのAPI拡張機能の使用

この章では、標準のディレクトリAPIにPL/SQLの拡張機能を使用して、ユーザーを管理および認証する方法について説明します。

Oracleの拡張機能には、ユーザーを作成するPL/SQL APIは含まれません。標準APIに対するOracleの拡張機能の詳細は、第11章を参照してください。

この章の内容は次のとおりです。

6.1 PL/SQL拡張機能のインストール

PL/SQL拡張機能は、Oracleデータベースのインストール時にDBMS_LDAPパッケージとともにインストールされます。スクリプト$ORACLE_HOME/rdbms/admin/catldap.sqlを実行する必要があります。

6.2 ハンドルを使用したディレクトリ・データへのアクセス

この章で説明する拡張機能のほとんどは、補助的なファンクションです。これらは、ユーザー、グループ、レルム、アプリケーションなど、特定のLDAPエンティティに関するデータにアクセスします。多くの場合、これらのファンクションは、いずれかのエンティティに対する参照を標準的なAPIファンクションに渡す必要があります。そのために、APIの拡張機能はハンドルと呼ばれる不透明なデータ構造を使用します。次の手順は、拡張機能がユーザー・ハンドルを作成する方法を示しています。

  1. LDAP接続を確立するか、接続のプールから接続を取得します。

  2. ユーザーの入力からユーザー・ハンドルを作成します。この入力は、識別名、GUIDまたは単純なシングル・サインオン・ユーザーIDです。

  3. LDAP接続ハンドル、ユーザー・ハンドルまたは資格証明を使用して、ユーザーを認証します。

  4. ユーザー・ハンドルを解放します。

  5. LDAP接続をクローズするか、接続プールに接続を戻します。

6.3 ユーザーの管理

次の手順は、DBMS_LDAP_UTLパッケージを使用して、ディレクトリからユーザー・プロパティを取得するハンドルを作成および使用する方法を示しています。

  1. DBMS_LDAP_UTL.create_user_handle(user_hd, user_type, user_id)を呼び出して、ユーザーの入力からユーザー・ハンドルを作成します。この入力は、識別名、GUIDまたは単純なシングル・サインオン・ユーザーIDです。

  2. DBMS_LDAP_UTL.set_user_handle_properties(user_hd, property_type, property)を呼び出して、レルムをユーザー・ハンドルと関連付けます。

  3. DBMS_LDAP_UTL.get_user_properties(ld, user_handle, attrs, ptype, ret_pset_coll)を呼び出して、ユーザー・エントリの属性を結果ハンドルに入れます。

  4. DBMS_LDAP_UTL.get_property_names(pset, property_names)DBMS_LDAP_UTL.get_property_values(pset, property_name, property_values)を呼び出して、手順3で取得した結果ハンドルからユーザー属性を抽出します。

6.4 ユーザーの認証

ディレクトリに対してユーザーを認証するには、DBMS_LDAP_UTL.authenticate_user(session, user_handle, auth_type, cred, binary_cred)を使用します。このファンクションは、ユーザーが指定したパスワードとユーザーのディレクトリ・エントリのパスワード属性を比較します。

6.5 PL/SQL LDAP APIの依存性と制限事項

このリリースのPL/SQL LDAP APIには、次の制限事項があります。

  • APIから取得したLDAPセッション・ハンドルは、データベース・セッションの継続時間内のみ有効です。LDAPセッション・ハンドルを表に書き込んだり、他のデータベース・セッションで再利用することはできません。

  • このリリースでは、同期型のLDAP APIファンクションのみサポートされています。

    PL/SQL LDAP APIで作業するには、データベースに接続する必要があります。クライアント側のPL/SQLエンジン(Oracle Formsなど)ではデータベースへの接続が有効でないかぎり、これを使用できません。