OpenFire可以很方便的集成已有数据库类别的系统的用户认证,通常的应用中还会遇到和Windows的身份认证集成,下面对方法总结一下:
一、集成本地Windows用户管理 此方法用openfire本身已经实现的NativeAuthProvider类进行验证,设置步骤如下: 1. 安装openfire 3.7.0; 2. 将openfire_3_7_0\openfire\resources\nativeAuth\win32-x86\下的shaj.dll文件复制到Java\jdk1.6.0_23\bin\下; 3. 运行openfire.exe; 4. 点击Launch Admin,配置好后,在打开的浏览器中输入正确的管理员帐户和密码,登录; 5. 在“服务器—服务器管理器—系统属性”中,将“provider.auth.className”的属性值修改为“org.jivesoftware.openfire.auth.NativeAuthProvider”并保存属性 6. 至此,再登录openfire服务器必须用正确的本机windows用户名及密码。由于默认只有用户名admin为管理员,建议在windows下新建admin用户或增加openfire的管理员帐户。
二、集成Windows AD 通过JAAS的开源库,我们也可以自己实现一个AD认证的Provider 1. 下载waffle http://waffle./ 2、编译Provider的实现类并包含guava-r07.jar、jna.jar、platform.jar、waffle-jna.jar,形成一个jar包,并复制到openfire_3_7_0\openfire\lib下 3、Openfire的provider.auth.className设置为我们实现的类即可 具体的实现如下 import waffle.windows.auth.impl.WindowsAuthProviderImpl; public class NTLMAuthProvider implements AuthProvider { public NTLMAuthProvider() { } public void authenticate(String username, String token, String digest) throws UnauthorizedException { public boolean isPlainSupported() { public boolean isDigestSupported() { public String getPassword(String username) throws UserNotFoundException, UnsupportedOperationException { public void setPassword(String username, String password) throws UserNotFoundException { public boolean supportsPasswordRetrieval() {
关键解读 以上的实现主要就是依据Java的JAAS规范,然后读取Windows账户和AD服务信息,实现用户的验证。 |
|