2017-01-27 6 views
1

私は、Liberty Profile上で動作するJavaコードをMS Active Directoryで認証し、LDAP検索を実行しています。コードはJNDIを使用して、意図したとおりに動作します。問題は、LDAPパラメータがJavaでハードコードされていることです。動作しますが、改善することができます:Liberty Profileで動作するJavaでldapRegistryプロパティを使用する

ldap.put(Context.PROVIDER_URL, "ldap://ad.foo.bar:389"); 
ldap.put(Context.SECURITY_PRINCIPAL, "CN=account,OU=A,DC=ad,DC=foo,DC=bar"); 
ldap.put(Context.SECURITY_CREDENTIALS, "apoorlykeptsecret"); 
... 
ldapCtxt = new InitialDirContext(ldap); 

代わりにserver.xmlファイルのldapRegistry要素からLDAPプロパティを選択することはできますか?または私は間違ったトラックにいますか?これにアプローチするより良い方法はありますか?

答えて

0

はい、server.xmlの<ldapRegistry>要素を使用して設定する必要があります。例えば

:フルドキュメントを参照してください

<ldapRegistry id="ldap" realm="SampleLdapADRealm" 
    host="ldapserver.mycity.mycompany.com" port="389" 
    baseDN="cn=users,dc=adtest,dc=mycity,dc=mycompany,dc=com" 
    bindDN="cn=testuser,cn=users,dc=adtest,dc=mycity,dc=mycompany,dc=com" 
    bindPassword="testuserpwd" 
    ldapType="Microsoft Active Directory"> 
    <activedFilters 
    userFilter="(&(sAMAccountName=%v)(objectcategory=user))" 
    groupFilter="(&(cn=%v)(objectcategory=group))" 
    userIdMap="user:sAMAccountName" 
    groupIdMap="*:cn" 
    groupMemberIdMap="memberOf:member" > 
    </activedFilters> 
</ldapRegistry> 

:代替迅速なアプローチとしてConfiguring LDAP user registries in Liberty

、あなたはJNDIエントリとしてあなたserver.xml設定でそれらの値を入れて、自分の中で値を得ることができましたJNDIルックアップによるアプリケーション。例:

<jndiEntry jndiName="ldap/provider_url" value="ldap://ad.foo.bar:389"/> 
<jndiEntry jndiName="ldap/secuirty_principal" value="CN=account,OU=A,DC=ad,DC=foo,DC=bar"/> 
<!-- WARNING: Storing passwords is JNDI is not secure --> 
<jndiEntry jndiName="ldap/security_credentials" value="apoorlykeptsecret"/> 


String providerUrl = InitialContext.doLookup("ldap/provider_url"); 
// etc... 
関連する問題