LDAP ディレクトリー、リレーショナル・データベース、および JEE またはカスタムのセキュリティーで保護されたフラット・ファイルなど、さまざまなタイプのリポジトリーを使用できます。 EGL シングル・サインオンを使用して、さまざまなリポジトリーにアクセスし、アプリケーション、プロキシー、および Web サービスに対する認証を行うことができます。 シングル・サインオンが成功するには、エンド・ユーザーがログイン画面で入力するユーザー ID とパスワードが、さまざまなリポジトリーのそれぞれに存在する必要があります。
最も一般的なタイプのリポジトリーは、Lightweight Directory Access Protocol (LDAP) ディレクトリーです。LDAP は、読み取りアクセスに最適化され、データがツリー構造で編成されている、特殊化されたデータベースです。JEE 認証のために LDAP ディレクトリー にアクセスする前に、LDAP ディレクトリー・サーバーに接続するようにアプリケーション・サーバーを構成してください。WebSphere® Application Server の場合は、この情報を管理コンソールで指定してください。 Apache Tomcat の場合は、この情報を ¥conf¥server.xml ファイルに指定してください。
// LDAP ディレクトリー・サーバーにアクセスするために必要な外部型
externalType ControlArray type JavaObject
{ JavaName = "Control[]", PackageName = "javax.naming.ldap" }
end
externalType InitialDirContext type JavaObject
{ JavaName = "InitialDirContext",
PackageName = "javax.naming.directory" }
function modifyAttributes( name String in,
mods ModificationItemArray in );
end
externalType InitialLdapContext extends InitialDirContext type JavaObject
{ JavaName = "InitialLdapContext",
PackageName = "javax.naming.ldap" }
constructor( environment Hashtable in, connCtls ControlArray in );
end
externalType ModificationItemArray extends Object type JavaObject
{ JavaName = "ModificationItem[]",
PackageName = "javax.naming.directory" }
end
// バインド基準用ハッシュ・テーブルをインスタンス化します。
// ハッシュ・テーブルは、EGL 内に既に定義されています。
hashtable Hashtable = new Hashtable();
// プロパティーは、次の場所に示されています。
// http://java.sun.com/j2se/1.4.2/docs/guide/jndi/jndi-ldap.html
// JNDI 環境プロパティーを設定します。
// ユーザー ID およびパスワードはストリングとして渡されます。
hashtable.put( "java.naming.factory.initial",
"com.sun.jndi.ldap.LdapCtxFactory" );
hashtable.put( "java.naming.provider.url",
"ldap://localhost:389/o=sample" );
hashtable.put( "java.naming.security.principal",
"uid=" + userid + ",ou=people,o=sample");
hashtable.put( "java.naming.security.credentials", password );
hashtable.put( "java.naming.security.authentication", "simple" );
hashtable.put( "java.naming.referral", "follow" );
hashtable.put( "java.naming.security.protocol", null );
// LDAP 固有のプロパティーを設定します。
hashtable.put( "java.naming.ldap.version", "3" );
// LDAP ディレクトリー・サーバーに接続します。
ctx InitialLdapContext = new InitialLdapContext( hashtable, null );
if ( ctx != null )
// データの取得
...
end
LDAP ディレクトリー内のデータの検索と変更を行うコードなど、この他のサンプル EGL コードについては、IBM® Rational® Business Developer 資料の (「Contents」の「Samples」にある) 『EGL LDAP Access』または『J2EE Security with EGL LDAP Access』を参照してください。