Oracle Fusion Middleware Oracle Identity Managementアプリケーション開発者ガイド 11gリリース1(11.1.1) B56242-01 |
|
戻る |
次へ |
この章では、標準のディレクトリAPIにPL/SQLの拡張機能を使用して、ユーザーを管理および認証する方法について説明します。Oracleの拡張機能には、ユーザーを作成するPL/SQL APIは含まれないことに注意してください。標準APIに対するOracleの拡張機能の詳細は、第11章を参照してください。
この章では、次の項目について説明します。
サンプル・コードは次のURLで入手できます。
http://www.oracle.com/technology/sample_code/
「Sample Applications–Oracle Application Server」の下の「Oracle Identity Management」リンクを探してください。
PL/SQL拡張機能は、Oracleデータベースのインストール時にDBMS_LDAP
パッケージとともにインストールされます。スクリプト$ORACLE_HOME/rdbms/admin/catldap.sql
を実行する必要があります。
この章で説明する拡張機能のほとんどは、補助的なファンクションです。これらは、ユーザー、グループ、レルム、アプリケーションなど、特定のLDAPエンティティに関するデータにアクセスします。多くの場合、これらのファンクションは、いずれかのエンティティに対する参照を標準的なAPIファンクションに渡す必要があります。そのために、APIの拡張機能はハンドルと呼ばれる不透明なデータ構造を使用します。次の手順は、拡張機能がユーザー・ハンドルを作成する方法を示しています。
LDAP接続を確立するか、接続のプールから接続を取得します。
ユーザーの入力からユーザー・ハンドルを作成します。この入力は、識別名、GUIDまたは単純なシングル・サインオン・ユーザーIDです。
LDAP接続ハンドル、ユーザー・ハンドルまたは資格証明を使用して、ユーザーを認証します。
ユーザー・ハンドルを解放します。
LDAP接続をクローズするか、接続プールに接続を戻します。
次の手順は、DBMS_LDAP_UTL
パッケージを使用して、ディレクトリからユーザー・プロパティを取得するハンドルを作成および使用する方法を示しています。
DBMS_LDAP_UTL.create_user_handle(user_hd, user_type, user_id)
を呼び出して、ユーザーの入力からユーザー・ハンドルを作成します。この入力は、識別名、GUIDまたは単純なシングル・サインオン・ユーザーIDです。
DBMS_LDAP_UTL.set_user_handle_properties(user_hd, property_type, property)
を呼び出して、レルムをユーザー・ハンドルと関連付けます。
DBMS_LDAP_UTL.get_user_properties(ld, user_handle, attrs, ptype, ret_pset_coll)
を呼び出して、ユーザー・エントリの属性を結果ハンドルに入れます。
DBMS_LDAP_UTL.get_property_names(pset, property_names)
とDBMS_LDAP_UTL.get_property_values(pset, property_name, property_values)
を呼び出して、手順3で取得した結果ハンドルからユーザー属性を抽出します。
ディレクトリに対してユーザーを認証するには、DBMS_LDAP_UTL.authenticate_user(session, user_handle, auth_type, cred, binary_cred)
を使用します。このファンクションは、ユーザーが指定したパスワードとユーザーのディレクトリ・エントリのパスワード属性を比較します。
このリリースのPL/SQL LDAP APIには、次の制限事項があります。
APIから取得したLDAPセッション・ハンドルは、データベース・セッションの継続時間内のみ有効です。LDAPセッション・ハンドルを表に書き込んだり、他のデータベース・セッションで再利用することはできません。
このリリースでは、同期型のLDAP APIファンクションのみサポートされています。
PL/SQL LDAP APIで作業するには、データベースに接続する必要があります。クライアント側のPL/SQLエンジン(Oracle Application Server Formsなど)ではデータベースへの接続が有効でないかぎり、このAPIを使用できません。