Openfire中的用户密码加密方式是采用的是Blowfish。
Blowfish是一个64位分组及可变密钥长度的分组密码算法,可用来加密64Bit长度的字符串。算法由两部分组成:密钥扩展和数据加密。
密钥扩展把长度可达到448位的密钥转变成总共4168字节的几个子密钥。
数据加密由一个简单函数迭代16轮,每一轮由密钥相关的置换,密钥相关和明文相关的代替组成。所有的运算都是32位字的加法和异或,仅有的另一个运算是每轮的四个查表。
Blowfish算法位于org.jivesoftware.util.Blowfish.java,其中encryptString(String plaintext)加密,encryptString(String text)解密。
追溯到调用这个2个方法的地方为,org.jivesoftware.openfire.auth.AuthFactory,其功能为管理整个openfire用户认证,包括客户端和后台管理员用户密码认证。AuthFactory底层连接数据库的类是org.jivesoftware.openfire.auth.DefaultAuthProvider,实现了密码验证,查询密码,设置密码等功能。
其中org.jivesoftware.openfire.handler.IQAuthHandler,验证客户端IQ类型报文(即验证客户端请求上来的登录等操作);
org.jivesoftware.openfire.commands.admin.user.AuthenticateUser,验证后台工具登录。
如果需要修改密码加密方式,需要修改AuthFactory和DefaultAuthProvider类,也可以增加一个类如下:
package org.jivesoftware.openfire.auth;
import org.jivesoftware.openfire.user.UserNotFoundException;
public class ZJAuthProvider implements AuthProvider{
@Override
public boolean isPlainSupported() {
return true;
}
@Override
public boolean isDigestSupported() {
return true;
}
@Override
public void authenticate(String username, String password) throws UnauthorizedException, ConnectionException, InternalUnauthenticatedException {
// TODO Auto-generated method stub
}
@Override
public void authenticate(String username, String token, String digest) throws UnauthorizedException, ConnectionException, InternalUnauthenticatedException {
// TODO Auto-generated method stub
}
@Override
public String getPassword(String username) throws UserNotFoundException, UnsupportedOperationException {
// TODO Auto-generated method stub
return null;
}
@Override
public void setPassword(String username, String password) throws UserNotFoundException, UnsupportedOperationException {
// TODO Auto-generated method stub
}
@Override
public boolean supportsPasswordRetrieval() {
return true;
}
}
然后修改provider.auth.className的值,openfire默认值是:org.jivesoftware.openfire.auth.DefaultAuthProvider,修改成你的类。
相关推荐
这些角色可以有不同的权限,如添加、删除用户,管理群组,修改服务器设置等。 6. **SPARK客户端集成**:SPARK是Openfire的桌面客户端,提供直观的界面供用户聊天和协作。整合Openfire时,需要确保SPARK客户端能识别...
4. **开发或修改插件**:如果需要自定义行为,比如获取所有在线用户,可以编写或修改OpenFire的Java插件。通常,你需要熟悉OpenFire的API以及如Spark或Smack这样的XMPP库。 5. **API调用**:使用HTTP客户端工具(如...
6. **持续集成与更新**:确保当现有系统中的用户信息发生变化时,这些更改也能实时反映在Openfire中。这可能需要设置定期同步任务或触发器。 7. **安全考虑**:在整合过程中,务必关注数据的安全传输和存储,遵循...
Openfire 表结构 数据字典 进行修改密码等操作请参考: Openfire用户密码的保存及加密、解密 http://blog.csdn.net/seeol/article/details/21638663
- 用户重置密码时,在 `openfire.xml` 文件中需要加入相应配置项。 - 设置密码时需满足一定复杂度要求:至少6位,包含数字和字母。如果是纯数字密码,则可能导致无法登录的问题。 以上步骤提供了 Openfire 即时通讯...
6. **安全与身份验证**:Openfire支持多种认证方式,包括基本的用户名/密码、LDAP集成、单点登录(SSO)等。Webchat会利用这些机制来验证用户身份,并确保通信的安全性。 7. **多语言支持**:Openfire Webchat通常...
在Openfire中,当用户创建或修改账户时,其敏感信息(如用户名、密码等)会通过Blowfish算法进行加密存储,从而防止未经授权的访问。在验证用户身份时,输入的明文密码会经过同样的加密过程,然后与数据库中存储的...
在这个“OpenfireUserManage”插件中,很可能是针对Openfire用户管理的一个实现,可能包括用户注册、登录、信息修改等功能。JSP页面可以用于用户交互界面,而Servlet则处理这些请求,与Openfire服务器进行数据交换,...
Openfire 是一款开源的即时通讯(Instant Messaging, IM)服务器软件,它基于XMPP(Extensible Messaging and Presence Protocol)协议,允许用户进行实时、双向的文本、语音和视频通信。这款软件广泛应用于企业内部...
1. **加密算法支持**:Openfire作为IM服务器,需要处理用户的登录认证、消息传输等安全问题。Bouncy Castle提供了各种加密算法,如RSA、AES、DES等,确保了数据在传输过程中的安全性。 2. **SSL/TLS支持**:...
7. **修改密码**: 这个功能通常需要通过Openfire的管理接口实现,发送一个修改密码的请求到服务器,验证旧密码后更新新密码。 8. **注销**: 用户可以主动注销登录,断开与服务器的连接,释放资源,这通过调用Smack...
8. **ofUser**:用户数据表,包含用户名、密码(明文和加密)、名字、邮箱、创建日期和最后修改日期等基本信息。 9. **ofUserProp**:用户属性表,用于存储用户自定义的属性,`username`和`name`为键,`propValue`...
源码中包含了用户账户的创建、修改、删除以及密码策略的实现。 3. **数据库接口**:Openfire通过JDBC与多种数据库系统交互,如MySQL、PostgreSQL等。源码中的数据库访问层是可扩展的,允许开发者根据实际需求定制...
1. **连接服务器**:使用`XMPPTCPConnection`类初始化连接,指定Openfire服务器的地址和端口,以及用户的JID(XMPP的用户名)和密码。 2. **登录验证**:调用`login()`方法完成身份验证,使客户端能够向服务器发送...
8. ofUser: 用户基本信息表,`username`是主键,`plainPassword`和`encryptedPassword`分别存储明文和加密后的密码,`name`、`email`、`creationDate`和`modificationDate`记录用户的个人信息和修改历史。...
c) 修改root用户的密码,以增强数据库的安全性。 d) 连接到数据库,输入命令行来管理MySQL数据库。 e) 创建新的数据库用于Openfire。 f) 导入Openfire所需的数据到新创建的数据库中。可以通过使用命令行来完成...
为了适应不同的数据库系统,可能需要对脚本进行一些修改,比如更改数据类型或索引的语法。 在插件设置中,你可能需要配置与你的数据库连接的相关参数,如数据库URL、用户名、密码等。一旦设置完成,Openfire服务器...
标题中的“可以访问openfire的agsxmpp.dll”指的是一个经过修改和编译的动态链接库(DLL)文件,agsXMPP.dll,该文件能够与Openfire服务器进行有效交互。Openfire是一款开源的即时通讯(IM)服务器,它基于XMPP...
本文针对使用Openfire服务器进行二次开发时可能遇到的问题,结合实际需求,提出了一系列解决方案,并着重介绍了Openfire服务器插件开发和源码修改等方面的设计与实现。 #### 二、Openfire插件开发问题分析与解决 #...
Openfire 在线离线识别插件是指 Presence 插件,它可以实时地检测用户的在线状态。在配置 Presence 插件之前,我们需要下载 Presence 插件的 jar 包,下载地址为 ...