当前位置: 首页 > 面试题库 >

Glassfish安全性-jdbcRealm:如何使用SHA-256摘要配置登录

郎正初
2023-03-14
问题内容

我在glassfish v3.0.1
b22中使用jdbcRealm进行安全保护。通过以下博客对其进行设置,使其使用我数据库中的USER表进行身份验证:http
:
//blogs.oracle.com/foo/entry/mort_learns_jdbc_realm_authentication。如果我将摘要算法保留为纯文本,那么我可以正常工作。但是,当我尝试将SHA-256用于摘要算法时,它将停止工作。我所做的是在Glassfish-
安全-领域-jdbcRealm-
我想要SHA-256的摘要中指定的(我只在摘要字段中键入SHA-256)。然后,我编写了一个简单的Java程序,将密码文本转换为SHA-256哈希。然后,我将该哈希值粘贴到数据库的密码字段中。顺便说一句,密码字段是varchar(30)类型。我无法登录了。我注意到一件事,我的简单Java程序每次为同一文本字段生成不同的哈希。

以下是我的简单Java程序:

        MessageDigest md = MessageDigest.getInstance("SHA-256");
        String text = "admin";
        md.update(text.getBytes("UTF-8"));
        byte[] digest = md.digest();
        System.out.println(digest.toString());

问题答案:

jdbcRealm允许对十六进制或base64的值进行编码。您需要在领域配置中指定其中之一,并在代码中将字节数组转换为以下格式之一:

Base64:

import com.sun.org.apache.xml.internal.security.utils.Base64;
...
byte[] digest = md.digest();
System.out.println(Base64.encode(digest));

十六进制:

...
byte[] digest = md.digest();
StringBuffer sb = new StringBuffer();
for (int i = 0; i < digest.length; i++) {
    String hex = Integer.toHexString(0xff & digest[i]);
    if (hex.length() == 1) sb.append('0');
    sb.append(hex);
}
System.out.println(sb.toString());

顺便说一句,密码字段是varchar(30)类型

您需要增加密码字段的大小。SHA-256 base64和hex值的长度分别为45和64个字符。



 类似资料:
  • 我使用的是Tomcat6,目前在MySql数据库中有作为明文密码工作的表单身份验证。我已经向密码添加了加密,以便在SHA-256中对密码进行哈希,它似乎有效,但是当我试图通过Tomcat6使用server.xml中的digest=“SHA-256”和digestencoding=“base64”进行身份验证时,它将无法进行身份验证。如果我从数据库中复制密码并将其输入到密码字段中,我可以对我的用户进

  • 我需要允许网站的老用户使用相同的凭证访问新网站。数据库服务器版本是Microsoft SQL Server 2005,我没有权限更改数据库。数据库的密码列设置为varchar(50),摘要为48个字符。我所知道的关于密码的唯一信息是,它们已经用sha-256算法进行了哈希处理,但据我所知,阿沙-256摘要是64个字符,而不是48个。有可能用sha256生成同样的48长度摘要吗?

  • 我正在研究Spring SAML和Microsoft ADFS 3.0之间的集成。甚至它已经在Spring SAML的留档中声明为: 双击提供程序打开它,选择tab Advanced并将“安全哈希算法”更改为SHA-1 我知道Spring SAML目前只支持SHA-1作为哈希算法,但我的要求是使用SHA-256。如果我尝试仅在ADFS中为SHA-256配置,它将不起作用。我想我得对Spring S

  • 我目前正在使用React在一个网站上工作,我希望能够有用户登录。现在,我的策略是在提交时将表单数据发送到服务器(express),如果信息与我的数据库中的用户匹配,服务器将发回一个签名的JWT,其中没有敏感信息(只有用户名)。 一旦客户机接收到JWT,我就将它添加到localStorage中,并将它的解码数据添加到redux存储中。我计划让我的redux存储当前登录的用户。

  • 若要配置安全性设置,请前往“配置”->“安全性”。 你可以更改用户密码的复杂性要求以提高密码强度,以及强制注销所有其他用户会话。 如果要在 Navicat Monitor 和客户端之间使用加密连接(HTTPS 会话),你可以将 Navicat Monitor 配置为使用 SSL/TLS 协议。请点击“+ 添加证书”并配置以下信息: 名 輸入证书的名。 证书 粘贴证书文件的内容。 私钥 粘贴私钥文件

  • 我能够让SCRAM-SHA-256身份验证与pgpool一起使用,但是我还没有找到一个很好的例子来设置pgbouner。我正在尝试使用auth_query。在postgres中,pgbounker将连接的用户将密码加密并存储在SCRAM-SHA-256中。但是我不知道如何在userlist.txt.中创建条目这应该是格式: 存储密钥和服务器密钥到底是什么,我如何生成它们?我可以使用哪些工具来创建它