Openfire整合第三方(现有)用户系统

我使用的是MySQL作为Openfire的数据库,自有系统(只是测试)的数据库也采用的MySQL。

首先我新创建了一个数据库作为自有数据库进行测试,数据库名为 testdb,然后在testdb中新建了用户表users(username,password,name,email),并新增了几个用户信息作为测试。

修改Openfire服务器的系统属性

登录到Openfire管理平台(默认为 localhost:9090),配置完成后(配置过程很简单,网上也有很多相关文章可供参考),进入【服务器】->【服务器管理器】-> 【系统属性】 ,当然你也可以直接修改Openfire的数据库,对应的数据表为 ofproperty 。
在这里插入图片描述

1. 现有系统数据库连接配置

你需要配置你自有的用户系统的数据库连接参数,以用于Openfire连接到你自有的数据库并进行相关校验、查询等数据库操作。

新增以下属性值:

  • jdbcProvider.driver
    设置数据库驱动,我的是MySQL数据库,所以驱动为:com.mysql.cj.jdbc.Driver

  • jdbcProvider.connectionString
    数据库连接地址:jdbc:mysql://localhost:3306/testdb?username=数据库连接用户名&password=数据库连接密码
    在这里插入图片描述
    若自有数据库为Oracle,则需添加Oracle的驱动依赖包:
    在这里插入图片描述
    jdbcProvider.driver = oracle.jdbc.driver.OracleDriver
    jdbcProvider.connectionString = jdbc:oracle:thin:数据库连接用户名/数据库连接密码@//dbIpAddress/dbName

2. 修改身份验证程序相关配置

进入【服务器】->【服务器管理器】-> 【系统属性】,修改以下属性值:

  • provider.auth.className
    将该值(org.jivesoftware.openfire.auth.DefaultAuthProvider)修改为

org.jivesoftware.openfire.auth.JDBCAuthProvider
在这里插入图片描述
DefaultAuthProvider与JDBCAuthProvider均实现了AuthProvider接口,用于实现用户登录校验。

因为我是在github上拉取的源码,配置后运行的Openfire项目,所有我们一起来看下源码中对应的类:
在这里插入图片描述
JDBCAuthProvider允许你通过连接任何你可以使用JDBC连接的数据库

JDBC身份验证提供了一个允许你根据任何一个你可以使用JDBC连接上的数据库对用户进行身份验证的程序。它也可以和 HybridAuthProvider 一起使用进行身份验证,这样你可以拥有不会污染外部数据的XMPP用户。

还需设置以下属性值:

属性名属性值说明
jdbcAuthProvider.passwordSQLSELECT password FROM users WHERE username=?查询用户密码SQL
jdbcAuthProvider.passwordTypeplain(因为是测试,密码类型我就直接设置为明文模式,而实际使用中明文的情况很少。) 密码类型有以下几种值可以配置:plain、md5、sha1、sha256、sha512、bcryptBcrypt(支持作为密码类型;但是,当链接密码类型时,它必须是最后给定的类型。bcrypt散列每次生成时都不同), 若不配置则默认为 plain 明文模式。 jdbcAuthProvider.passwordType 也可以接受以逗号分隔的密码类型字符串,这在存储旧(ex/md5)密码散列,然后“升级”为更强大的散列算法的情况下非常有用。Hash算法从左到右执行。例如 ‘md5,sha1’.
jdbcAuthProvider.allowUpdatetrue是否允许修改用户密码
jdbcAuthProvider.setPasswordSQLUPDATE users SET password=? where username=?设置用户密码SQL
jdbcAuthProvider.bcrypt.cost10bcrypt密码类型的配置值,默认值:10

如果不想使用 jdbcProvider.connectionString 属性值连接数据库进行校验,可配置 jdbcAuthProvider.useConnectionProvider = true. 以下为JDBCAuthProvider中的变量,对应以上配置的属性值:
在这里插入图片描述

3. 修改用户系统操作程序相关配置

进入【服务器】->【服务器管理器】-> 【系统属性】,修改以下属性值:

  • provider.user.className
    将该值(org.jivesoftware.openfire.auth.DefaultUserProvider)修改为
    org.jivesoftware.openfire.auth.JDBCUserProvider
    在这里插入图片描述
    DefaultUserProvider与JDBCUserProvider均实现了UserProvider接口,用于实现用户的增删改查等操作。

JDBCUserProvider允许你使用外部数据库来定义用户,最好是和JDBCAuthProvider联合使用。所有数据皆为read-only,即不可进行增删改操作。

还需配置以下属性值:

属性名属性值说明
jdbcUserProvider.loadUserSQLSELECT name,email FROM users WHERE username = ?加载用户SQL
jdbcUserProvider.userCountSQLSELECT COUNT(*) FROM users查询用户数量SQL
jdbcUserProvider.allUsersSQLSELECT username,name,email FROM users查询所有用户信息SQL
jdbcUserProvider.searchSQLSELECT username,name,email FROM users WHERE(根据关键字Username、Name、Email)搜索用户SQL
jdbcUserProvider.usernameFieldusername自有数据库用户数据表(testdb.users)的对应的用户账号字段
jdbcUserProvider.nameFieldname自有数据库用户数据表(testdb.users)的对应的用户名称字段
jdbcUserProvider.emailFieldemail自有数据库用户数据表(testdb.users)的对应的用户邮箱字段

同上,如果不想使用 jdbcProvider.connectionString 属性值连接数据库进行用户查询等操作,可配置 jdbcUserProvider.useConnectionProvider = true. 以下为JDBCUserProvider中使用的变量,对应以上配置的属性值:
在这里插入图片描述
在这里插入图片描述

4. 设置管理员JID,用于登录Openfire管理平台

配置属性值:

  • admin.authorizedJIDs
    该属性值表示Openfire的管理员账号JID,格式为:username@domain,即用户账号@Openfire服务器域名。可配置多个,多个以逗号隔开。我配置其值为 admin@domain.
    在这里插入图片描述

所有配置都修改好后,重启Openfire服务,使用刚刚配置的管理员账号密码登录Openfire管理平台查看用户信息等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CAS 单点登录 多数据库 SSO 1、 单点登录概述 单点登录的英文名称为Single Sign-On,简写为SSO,它是一个用户认证的过程,允许用户一次性进行认证之后,就访问系统中不同的应用;而不需要访问每个应用时,都重新输入密码。IBM对SSO有一个形象的解释“单点登录、全网漫游”。 SSO将一个企业内部所有域中的用户登录和用户帐号管理集中到一起,SSO的好处显而易见: 1. 减少用户在不同系统中登录耗费的时间,减少用户登录出错的可能性 2. 实现安全的同时避免了处理和保存多套系统用户的认证信息 3. 减少了系统管理员增加、删除用户和修改用户权限的时间 4. 增加了安全性:系统管理员有了更好的方法管理用户,包括可以通过直接禁止和删除用户来取消该用户对所有系统资源的访问权限 对于内部有多种应用系统的企业来说,单点登录的效果是十分明显的。很多国际上的企业已经将单点登录作为系统设计的基本功能之一。 1.1 单点登录产品 商业SSO软件  专门的SSO商业软件  主要有:Netgrity的Siteminder,已经被CA收购。Novell 公司的iChain。RSA公司的ClearTrust等。  门户产品供应商自己的SSO产品,  如:BEA的WLES,IBM 的Tivoli Access Manager,Sun 公司的identity Server,Oracle公司的OID等。 上述商业软件一般适用于客户对SSO的需求很高,并且企业内部采用Domino、SAP、Sieble等系统比较多的情况下。单点登录产品通常需要在应用软件中增加代理模块,而商业SSO产品主要针对大型软件制作了代码模块。 因此,商业SSO软件除了价格问题外,另一个重要问题就是对客户自己的应用系统支持未必十分完善。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值