ユーザー・リポジトリーへのアクセス

LDAP ディレクトリー、リレーショナル・データベース、および JEE またはカスタムのセキュリティーで保護されたフラット・ファイルなど、さまざまなタイプのリポジトリーを使用できます。 EGL シングル・サインオンを使用して、さまざまなリポジトリーにアクセスし、アプリケーション、プロキシー、および Web サービスに対する認証を行うことができます。 シングル・サインオンが成功するには、エンド・ユーザーがログイン画面で入力するユーザー ID とパスワードが、さまざまなリポジトリーのそれぞれに存在する必要があります。

最も一般的なタイプのリポジトリーは、Lightweight Directory Access Protocol (LDAP) ディレクトリーです。LDAP は、読み取りアクセスに最適化され、データがツリー構造で編成されている、特殊化されたデータベースです。JEE 認証のために LDAP ディレクトリー にアクセスする前に、LDAP ディレクトリー・サーバーに接続するようにアプリケーション・サーバーを構成してください。WebSphere® Application Server の場合は、この情報を管理コンソールで指定してください。 Apache Tomcat の場合は、この情報を ¥conf¥server.xml ファイルに指定してください。

Java™として生成され、サーバー上で実行される EGL コードを使用して LDAP ディレクトリーにアクセスすることもできます。 EGL コードを使用して LDAP ディレクトリーにアクセスするには、EGL REST サービスまたは SOAP サービスを定義してください。 サービスでは、JNDI LDAP Javaクラスにマップする EGL 外部型を使用して、LDAP ディレクトリーにアクセスできます。 LDAP ディレクトリー・サーバーへの接続を確立する EGL コードの例を次に示します。
// 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』を参照してください。


フィードバック