XMPP Openfire集成windows身份认证

简介: OpenFire可以很方便的集成已有数据库类别的系统的用户认证,通常的应用中还会遇到和Windows的身份认证集成,下面对方法总结一下:   一、集成本地Windows用户管理 此方法用openfire本身已经实现的NativeAuthProvider类进行验证,设置步骤如下: 1.

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.codeplex.com/

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 {
    private static final Logger Log = LoggerFactory.getLogger(NTLMAuthProvider.class);

    public NTLMAuthProvider() {

    }
    public void authenticate(String username, String password) throws UnauthorizedException {
        if (username.contains("@")) {
            // Check that the specified domain matches the server's domain
            int index = username.indexOf("@");
            String domain = username.substring(index + 1);
            if (domain.equals(XMPPServer.getInstance().getServerInfo().getXMPPDomain())) {
                username = username.substring(0, index);
            } else {
                // Unknown domain. Return authentication failed.
                throw new UnauthorizedException();
            }
        }
        try {
            WindowsAuthProviderImpl wapi=new WindowsAuthProviderImpl();
            wapi.logonUser(username,password);
        }
        catch (Exception e) {
            throw new UnauthorizedException(e);
        }
    }

    public void authenticate(String username, String token, String digest) throws UnauthorizedException {
        throw new UnsupportedOperationException();
    }

    public boolean isPlainSupported() {
        return true;
    }

    public boolean isDigestSupported() {
        return false;
    }

    public String getPassword(String username) throws UserNotFoundException, UnsupportedOperationException {      
        throw new UnsupportedOperationException();
    }

    public void setPassword(String username, String password) throws UserNotFoundException {
        throw new UnsupportedOperationException();
    }

    public boolean supportsPasswordRetrieval() {
        return false;
    }
}

 

关键解读

以上的实现主要就是依据Java的JAAS规范,然后读取Windows账户和AD服务信息,实现用户的验证。

相关文章
|
1月前
|
前端开发 Java Maven
java集成opencv(不踩坑),实现人脸检测小demo(含上传人像图片识别接口),windows,IDEA,Springboot
java集成opencv(不踩坑),实现人脸检测小demo(含上传人像图片识别接口),windows,IDEA,Springboot
178 0
|
4月前
|
NoSQL MongoDB 数据库
MongoDB【部署 03】Windows系统安装mongodb并设置用户名密码(无需安装mongosh)及SpringBoot集成报错 Command failed with error 18
MongoDB【部署 03】Windows系统安装mongodb并设置用户名密码(无需安装mongosh)及SpringBoot集成报错 Command failed with error 18
138 0
|
7月前
|
编解码 开发工具 数据安全/隐私保护
Windows平台RTMP直播推送集成简要说明
好多开发者在集成大牛直播SDK (官方)的Windows平台RTMP推送模块时吓一跳,怎么这么多接口?本文做个简单的拆分:
|
11月前
|
Java jenkins 持续交付
pytest自动化框架集成jenkins+gitee+allure,使用git下拉代码和本地代码实现,基于windows
pytest自动化框架集成jenkins+gitee+allure,使用git下拉代码和本地代码实现,基于windows
|
存储 运维 安全
如何做好统一身份认证账号管理及集成
传统统一身份认证系统的建设存在众多的问题,使设计实现复杂化,管理复杂化,集成复杂化。我们今天将详细讨论下统一身份认证账号设计的几个相关问题
2099 1
如何做好统一身份认证账号管理及集成
|
数据挖掘 Windows
数据分析----数据分析环境搭建即在Windows10系统安装Anaconda集成环境
数据分析----数据分析环境搭建即在Windows10系统安装Anaconda集成环境
93 0
数据分析----数据分析环境搭建即在Windows10系统安装Anaconda集成环境
|
jenkins Java 测试技术
Jenkins集成appium自动化测试(Windows篇)
自动化测试脚本绝大部分用于回归测试,这就需要制定执行策略,如每天、代码更新后、项目上线前定时执行,才能达到最好的效果,这时就需要进行Jenkins集成。 不像web UI自动化测试可以使用无痕浏览器做到无界面,APP UI自动化需要用到真机或模拟器,在完全的linux环境下做Jenkins集成显得不太可能。 可以在自己的工作电脑上搭建Jenkins,并运行APP UI自动化测试项目,但工作电脑关闭后就不能定时运行自动化项目,且工作的电脑还要用来做别的工作,这样显得极其不方便。
Jenkins集成appium自动化测试(Windows篇)
|
IDE 开发工具 Windows
QT应用编程: windows下QT调用COM组件并集成到QT界面
QT应用编程: windows下QT调用COM组件并集成到QT界面
455 0
QT应用编程: windows下QT调用COM组件并集成到QT界面
|
开发工具 Windows
产品百科 |Windows 端如何快速集成 RTC SDK
本文为您介绍了 Windows 端集成 SDK 操作,帮助您快速集成 SDK 并能使用音视频通信基本功能。
产品百科 |Windows 端如何快速集成 RTC SDK
|
弹性计算 网络安全 数据安全/隐私保护
RAM角色集成企业OpenLDAP身份认证
企业OpenLDAP用户以KeyCloak实现用户/用户组映射为RAM角色的SSO。
RAM角色集成企业OpenLDAP身份认证

热门文章

最新文章