我正在为我的大学做一个项目,这是一个移动应用程序,用于情绪化。我们使用的是电话间隔,我的问题是如何在LDAP服务器上进行身份验证检查。一般情况下,如何从LDAP检索信息。
发布于 2014-01-27 15:42:54
Java中的默认JNDI类不难理解。基本上:
来自我当前项目的一些示例代码。
步骤1和2:使用"userdn“和"password”创建经过身份验证的连接。
private LdapContext getLdapContext( String userdn, String password )
{
LdapContext ldapCtx = null;
Hashtable<String, String> env = new Hashtable<String, String>(5, 0.75F);
env.put( Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory" );
if ( ldapPort.equals( "636" ) )
{
env.put( Context.SECURITY_PROTOCOL, "ssl");
env.put("java.naming.ldap.factory.socket", "portal.ldap.util.PortalSocketFactory");
}
env.put( Context.PROVIDER_URL, "ldap://"
+ ldapHost + ":"
+ ldapPort );
env.put( Context.SECURITY_AUTHENTICATION, "simple" );
env.put( Context.SECURITY_PRINCIPAL, userdn );
env.put( Context.SECURITY_CREDENTIALS, password );
try {
ldapCtx = new InitialLdapContext( env, null );
} catch ( NamingException e ) {
// Handle error
}
return ldapCtx;
}
步骤3:使用经过身份验证的连接从LDAP服务器读取对象。
private Attributes getAttrs()
{
LdapContext ctx = getLdapContext();
try
{
return ctx.getAttributes( "cn=your,ou=object,o=dn" , { "cn", "yourattribute" } );
}
catch (NamingException e)
{
// Handle error
}
catch (NullPointerException e)
{
// Handle error
}
finally
{
try {
ctx.close();
} catch (NamingException e) {}
}
}
属性允许您访问cn=your、ou=object、o=dn对象的数据。祝好运!
发布于 2014-01-26 19:12:06
一般的方法是使用无赏金实现--提供LDAP客户端功能(例如,Java),并开发一个插件来公开web视图中的功能。
https://stackoverflow.com/questions/21362601
复制相似问题