今天终于下笔了,下笔前想了想,起什么名字好呢,我们总是抱怨自己不喜欢的东西是垃圾,那么在别人眼里可能我的东西也是垃圾,那么就叫btr吧,better than rubbish。
ok,进入正题。AD认证,我个人认为,相当简单的一个需求,实现两个功能点:
- 验证域账号密码是否正确
- 搜索指定用户名并返回用户属性
其核心组件是
DirContext ctx=new InitialDirContext(hashtable);
其中hashtable需要压入SECURITY_AUTHENTICATION,SECURITY_PRINCIPAL,SECURITY_CREDENTIALS,INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.connect.timeout",PROVIDER_URL
如果init成功则表示验证通过,接下来就是获取用户属性,其核心代码是
NamingEnumeration<SearchResult> ne = ctx.search(baseName, "cn="+userName,SearchControls);
如果搜索到的话则遍历searchresult即可获取所有的用户属性即可。
今天暂时就实现了用户登录并返回自己的属性以及管理员登录查询其他用户的属性。还有一些边边角角可以修补,比如说返回指定的属性,域账号自登陆等,这些等后面saml都实现了一以后再加进来。先睡觉了,好困