2017-01-27 3 views
1

У меня есть код Java, работающий на профиле Liberty, который проверяет подлинность с помощью MS Active Directory и выполняет поиск LDAP. Код использует JNDI и делает то, что он предназначен. Проблема в том, что параметры LDAP жестко закодированы в Java. Работает, но может быть улучшено:Использование свойств ldapRegistry в Java, запущенных в профиле Liberty

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); 

Можно выбрать свойство LDAP до от ldapRegistry элемента в server.xml файл вместо этого? Или я ошибаюсь? Есть ли лучший способ приблизиться к этому?

ответ

0

Да, вы должны иметь возможность настроить это с помощью элемента <ldapRegistry> в файле server.xml.

Например:

<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

В качестве альтернативного быстрого подхода, вы могли бы положить эти значения в конфигурации server.xml как записи JNDI и получить значение в вашем приложение с помощью поиска 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... 
Смежные вопросы