`
buerkai
  • 浏览: 169298 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

openfire用户密码修改

 
阅读更多

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,验证后台工具登录。

 

如果需要修改密码加密方式,需要修改AuthFactoryDefaultAuthProvider类,也可以增加一个类如下:

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,修改成你的类。

 

 

分享到:
评论

相关推荐

    [经典]Openfire整合现有用户

    这些角色可以有不同的权限,如添加、删除用户,管理群组,修改服务器设置等。 6. **SPARK客户端集成**:SPARK是Openfire的桌面客户端,提供直观的界面供用户聊天和协作。整合Openfire时,需要确保SPARK客户端能识别...

    OpenFire所有在线用户

    4. **开发或修改插件**:如果需要自定义行为,比如获取所有在线用户,可以编写或修改OpenFire的Java插件。通常,你需要熟悉OpenFire的API以及如Spark或Smack这样的XMPP库。 5. **API调用**:使用HTTP客户端工具(如...

    openfire扩展整合现有系统用户

    6. **持续集成与更新**:确保当现有系统中的用户信息发生变化时,这些更改也能实时反映在Openfire中。这可能需要设置定期同步任务或触发器。 7. **安全考虑**:在整合过程中,务必关注数据的安全传输和存储,遵循...

    Openfire表结构_数据字典

    Openfire 表结构 数据字典 进行修改密码等操作请参考: Openfire用户密码的保存及加密、解密 http://blog.csdn.net/seeol/article/details/21638663

    openfire安装---及时聊天

    - 用户重置密码时,在 `openfire.xml` 文件中需要加入相应配置项。 - 设置密码时需满足一定复杂度要求:至少6位,包含数字和字母。如果是纯数字密码,则可能导致无法登录的问题。 以上步骤提供了 Openfire 即时通讯...

    openfire webchat开发包

    6. **安全与身份验证**:Openfire支持多种认证方式,包括基本的用户名/密码、LDAP集成、单点登录(SSO)等。Webchat会利用这些机制来验证用户身份,并确保通信的安全性。 7. **多语言支持**:Openfire Webchat通常...

    openfire.jar最稳定的jar包

    在Openfire中,当用户创建或修改账户时,其敏感信息(如用户名、密码等)会通过Blowfish算法进行加密存储,从而防止未经授权的访问。在验证用户身份时,输入的明文密码会经过同样的加密过程,然后与数据库中存储的...

    Openfire插件开发 访问jsp servlet

    在这个“OpenfireUserManage”插件中,很可能是针对Openfire用户管理的一个实现,可能包括用户注册、登录、信息修改等功能。JSP页面可以用于用户交互界面,而Servlet则处理这些请求,与Openfire服务器进行数据交换,...

    openfire 下载

    Openfire 是一款开源的即时通讯(Instant Messaging, IM)服务器软件,它基于XMPP(Extensible Messaging and Presence Protocol)协议,允许用户进行实时、双向的文本、语音和视频通信。这款软件广泛应用于企业内部...

    openfire 3.9.3第二次开发集成所需要的包

    1. **加密算法支持**:Openfire作为IM服务器,需要处理用户的登录认证、消息传输等安全问题。Bouncy Castle提供了各种加密算法,如RSA、AES、DES等,确保了数据在传输过程中的安全性。 2. **SSL/TLS支持**:...

    XMPP_OPenfire即时通讯IM-android版

    7. **修改密码**: 这个功能通常需要通过Openfire的管理接口实现,发送一个修改密码的请求到服务器,验证旧密码后更新新密码。 8. **注销**: 用户可以主动注销登录,断开与服务器的连接,释放资源,这通过调用Smack...

    Openfire数据结构详解

    8. **ofUser**:用户数据表,包含用户名、密码(明文和加密)、名字、邮箱、创建日期和最后修改日期等基本信息。 9. **ofUserProp**:用户属性表,用于存储用户自定义的属性,`username`和`name`为键,`propValue`...

    openfire_src3.5.1源码

    源码中包含了用户账户的创建、修改、删除以及密码策略的实现。 3. **数据库接口**:Openfire通过JDBC与多种数据库系统交互,如MySQL、PostgreSQL等。源码中的数据库访问层是可扩展的,允许开发者根据实际需求定制...

    openfire聊天Smack示例

    1. **连接服务器**:使用`XMPPTCPConnection`类初始化连接,指定Openfire服务器的地址和端口,以及用户的JID(XMPP的用户名)和密码。 2. **登录验证**:调用`login()`方法完成身份验证,使客户端能够向服务器发送...

    openfire表结构

    8. ofUser: 用户基本信息表,`username`是主键,`plainPassword`和`encryptedPassword`分别存储明文和加密后的密码,`name`、`email`、`creationDate`和`modificationDate`记录用户的个人信息和修改历史。...

    Mac 下搭建XMPP服务器之openfire

    c) 修改root用户的密码,以增强数据库的安全性。 d) 连接到数据库,输入命令行来管理MySQL数据库。 e) 创建新的数据库用于Openfire。 f) 导入Openfire所需的数据到新创建的数据库中。可以通过使用命令行来完成...

    openfire聊天记录插件(含有数据库脚本)

    为了适应不同的数据库系统,可能需要对脚本进行一些修改,比如更改数据类型或索引的语法。 在插件设置中,你可能需要配置与你的数据库连接的相关参数,如数据库URL、用户名、密码等。一旦设置完成,Openfire服务器...

    可以访问openfire的agsxmpp.dll

    标题中的“可以访问openfire的agsxmpp.dll”指的是一个经过修改和编译的动态链接库(DLL)文件,agsXMPP.dll,该文件能够与Openfire服务器进行有效交互。Openfire是一款开源的即时通讯(IM)服务器,它基于XMPP...

    openfire二次开发问题分析及解决

    本文针对使用Openfire服务器进行二次开发时可能遇到的问题,结合实际需求,提出了一系列解决方案,并着重介绍了Openfire服务器插件开发和源码修改等方面的设计与实现。 #### 二、Openfire插件开发问题分析与解决 #...

    openfire服务器配置.docx

    Openfire 在线离线识别插件是指 Presence 插件,它可以实时地检测用户的在线状态。在配置 Presence 插件之前,我们需要下载 Presence 插件的 jar 包,下载地址为 ...

Global site tag (gtag.js) - Google Analytics