当前位置: 首页 > 知识库问答 >
问题:

使用Mysql5.5的JBOSS7.1/JBPM身份验证用户

韩淇
2023-03-14

我是jboss和jBPM的新手;我需要关于JBOSS7身份验证的帮助。我们遇到“密码不正确/密码需要”错误。

下面是我们的jboss standlone.*.xml conf的一部分。

<security-domain name="other" cache-type="default">
        <authentication>
            <login-module code="org.jboss.security.auth.spi.DatabaseServerLoginModule" flag="required">
                 <module-option name="dsJndiName" value="java:jboss/datasources/jbpmDS"/>
                 <module-option name="principalsQuery" value="select passwd from users  where username=?"/>
                 <module-option name="rolesQuery" value="select userRoles 'Roles' from userroles where username=?"/>
                 <module-option name="hashAlgorithm" value="pbkdf2_sha256"/>
            </login-module>
        </authentication>
</security-domain>

谁能帮帮我吗?

共有1个答案

柴泰平
2023-03-14

基于这里的信息,这里是应该与Django pbkdf2_sha256一起工作的实现(您需要向JBoss注册这个类,而不是原始的DatabaseServerLoginModule)。请记住我没有测试它...

public class PBKDF2WithSha256DatabaseServerLoginModule extends DatabaseServerLoginModule {
    protected boolean validatePassword(String inputPassword, String expectedPassword) {
        if(inputPassword == null || expectedPassword == null) {
            return false;
        }
        String[] encodedPassword = expectedPassword.split("\\$");
        int encodedIterations = Integer.parseInt(encodedPassword[1]);
        byte[] encodedSalt = encodedPassword[2].getBytes(Charset.forName("UTF-8"));
        String encodedHash = encodedPassword[3];
        SecretKeyFactory f = null;
        try {
            f = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256");
        } catch (NoSuchAlgorithmException e) {
            throw new RuntimeException("Need a Java implementation with cryptography.");
        }
        KeySpec ks = new PBEKeySpec(inputPassword.toCharArray(), encodedSalt, encodedIterations, 256);
        SecretKey s = null;
        try {
            s = f.generateSecret(ks);
        } catch (InvalidKeySpecException e) {
            // Encoded password is corrupt
            return false;
        }
        if (encodedHash.equals(Base64.getEncoder().encodeToString(s.getEncoded()))) {
            return true;
        } else {
            return false;
        }
    }
}
 类似资料:
  • 我正在使用SpringBoot开发具有微服务架构的Rest Backend。为了保护endpoint,我使用了JWT令牌机制。我正在使用Zuul API网关。 如果请求需要权限(来自JWT的角色),它将被转发到正确的微服务。Zuul api网关的“WebSecurityConfigrerAdapter”如下。 这样,我必须在这个类中编写每个请求授权部分。因此,我希望使用方法级安全性,即“Enabl

  • 我有一个asp。net(C#)设置为使用LDAP进行身份验证。一切正常,我可以和我们目录中的任何用户一起登录。问题是,我需要将某些页面限制为特定组中的人。我正在使用登录查看帐户文件夹的方法。 我的网站设计很简单,它有三个页面,一个供所有人查看(账户文件夹之外),另外两个需要身份验证。我希望一个组可以访问两个网页,另一个组只能访问其中一个网页。 我试过: 但不管我的用户不在该组中。我有一个LDAP浏

  • 问题内容: 我目前有一个Palm WebOS应用程序,该应用程序使用Ajax.Request通过基本身份验证连接到Web服务。要发送用户名和密码,我只需将其包含在url(即http:// username:password @ ip-address:port / )中即可,效果非常好,期望密码包含字母数字字符以外的任何字符(例如, ,最近有一个用户给我发送电子邮件,该用户的密码中包含“ @”和“&

  • 于是我在这里看到:https://firebase . Google . com/docs/auth/web/account-linking # link-auth-provider-credentials-to-a-user-account现在可以在Firebase中链接用户账号了。我还看到Firebase提供了匿名认证的功能,它为一个用户创建一个用户会话,不需要任何凭证。 在我们的应用程序中,

  • 我试图在一个反应式Spring Boot应用程序中配置一个Spring Security性,该应用程序具有一个Vuejs前端,在未经身份验证时将用户重定向到外部OpenID提供程序(用于身份验证)。在用户通过OpenID提供程序进行身份验证并重定向回应用程序(前端)后,将根据OpenID提供程序的响应创建用户名密码身份验证令牌(身份验证),并手动进行身份验证。 但是,在执行此操作时,应用程序似乎无

  • 该应用程序应该接受用户电子邮件和密码,并使用Firebase身份验证作为后端。我使用像素2作为模拟器。每次应用程序处理登录功能时,它都会崩溃。 下面是Java文件和gradle文件 Java文件: