사용자 저장소에 액세스

LDAP 디렉토리, 관계형 데이터베이스, JEE 또는 사용자 정의 보안이 있는 플랫 파일과 같은 다양한 유형의 저장소를 사용할 수 있습니다. EGL 싱글 사인온을 사용하여 다른 저장소에 액세스하고 애플리케이션, 프록시, 웹 서비스에 대해 인증할 수 있습니다. 싱글 사인온이 성공하려면 일반 사용자가 로그인 화면에 입력하는 사용자 ID 및 비밀번호가 다양한 각 저장소에 있어야 합니다.

가장 일반적인 저장소 유형은 LDAP(Lightweight Directory Access Protocol) 디렉토리이며 이는 읽기 액세스에 최적화되어 있고 트리 구조에서 해당 데이터를 구성하는 전문화된 데이터베이스입니다. JEE 인증을 위해 LDAP 디렉토리에 액세스하기 전에 LDAP 디렉토리 서버에 연결하도록 애플리케이션 서버를 구성하십시오. WebSphere® Application Server의 경우 관리 콘솔에서 이 정보를 지정하고 Apache Tomcat의 경우 \conf\server.xml 파일에서 이 정보를 지정하십시오.

Java™에 생성되고 LDAP 디렉토리에 액세스하기 위해 서버에서 실행 중인 EGL 코드를 사용할 수도 있습니다. EGL 코드를 사용하여 LDAP 디렉토리에 액세스하려면 EGL REST 또는 SOAP 서비스를 정의하십시오. 서비스는 LDAP 디렉토리에 액세스하기 위해 JNDI LDAP Java 클래스에 맵핑하는 EGL 외부 유형을 사용할 수 있습니다. 다음은 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 문서의 "EGL LDAP 액세스" 또는 "EGL LDAP 액세스를 지원하는 J2EE 보안"의 내용을 참조하십시오.