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

未执行客户端证书验证的wildfly 10自定义登录模块

隆向晨
2023-03-14

我需要在wildfly 10上运行一个自定义登录(我真的需要一个自定义实现)模块和客户端证书验证,但该模块本身从未执行。同样的方法也适用于jboss 6。

我的自定义模块:

public class WsLoginModule implements LoginModule {

@Override
public void initialize(Subject subject, CallbackHandler callbackHandler, Map<String, ?> sharedState,
        Map<String, ?> options) {
  System.out.println("initialize()");
}

@Override
public boolean login() throws LoginException {
    System.out.println("login()");
    return true;
}

@Override
public boolean commit() throws LoginException {
    System.out.println("commit()");
    return true;
}

@Override
public boolean abort() throws LoginException {
    System.out.println("abort()");
    return true;
}

@Override
public boolean logout() throws LoginException {
    System.out.println("logout()");
    return true;
}

}

网状物xml

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<security-constraint>
    <web-resource-collection>
        <web-resource-name>action</web-resource-name>
        <description>constraint</description>
        <url-pattern>/*</url-pattern>
        <http-method>HEAD</http-method>
        <http-method>GET</http-method>
        <http-method>POST</http-method>
        <http-method>PUT</http-method>
        <http-method>DELETE</http-method>
    </web-resource-collection>
    <auth-constraint>
        <role-name>myapp</role-name>
    </auth-constraint>
    <user-data-constraint>
        <description>no description</description>
        <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    </user-data-constraint>
</security-constraint>
<login-config>
    <auth-method>CLIENT-CERT</auth-method>
    <realm-name>custom-security-domain</realm-name>
</login-config>
<security-role>
    <description></description>
    <role-name>myapp</role-name>
</security-role>

jboss网站。xml

<jboss-web xmlns="http://www.jboss.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     xsi:schemaLocation="http://www.jboss.com/xml/ns/javaee 
http://www.jboss.org/j2ee/schema/jboss-web_6_0.xsd" version="6.0">
<security-domain>custom-security-domain</security-domain>

在standalone.xml,包括ssl证书配置:

        <security-realm name="SslRealm">
            <server-identities>
                <ssl>
                    <keystore path="/home/me/keystore.javaks" keystore-password="passwd"/>
                </ssl>
            </server-identities>
        </security-realm>

此外,我的自定义安全域是独立的。xml

            <security-domain name="custom-security-domain" cache-type="default">
                <authentication>
                    <login-module code="my.app.WsLoginModule" flag="required"/>
                </authentication>
            </security-domain>

甚至更改了默认的安全域

<default-security-domain value="custom-security-domain"/>

最后,https侦听器

<https-listener name="default-ssl" security-realm="SslRealm" socket-binding="https"/>

一切似乎都可以,如上所示,但当我试图执行简单的任务时,如调用网络服务(即使在出示证书时),我只得到禁止。奇怪的是,我的类“WsLoginMoules”从未被执行过。

我是不是漏了什么?

共有1个答案

危彬彬
2023-03-14

将登录模块的代码放在JBoss模块中。请按照留档中的说明进行操作,数据库JDBC驱动程序有很多示例。

 类似资料:
  • 我不熟悉SSL和证书。我一直在做关于客户端证书认证的研究。我看过这个和wiki。 因此,如果我必须为我的B2B REST服务实现客户端证书身份验证解决方案,我应该执行以下操作 要求客户端生成自己的私钥,并为其公钥生成证书(CA 颁发?)。通过电子邮件或 USB 闪存盘发送该证书。 在服务器端将客户端的公共证书导入信任存储区并启用客户端身份验证 在握手期间,客户端会出示其证书并进行身份验证,因为服务

  • 验证 SSH 服务器证书(客户端) 和 SSH 用户证书 类似,使用客户端机构认证来验证主机。需要一个 SSH 服务器数字证书认证机构签发服务器证书,客户端只需要保存 CA 的公钥。 使用一台处于气隙系统下的计算机来生成服务器数字证书认证机构的根证书: ❯ ssh-keygen -C "SSH Server Certificate Authority" -f sshserver.root.ca 使

  • 我试图发送一个X.509客户端证书与输出请求zuul转发代理。证书包含在密钥存储库中,我正在加载SSLContext上的。 代码如下: 当我做一个测试请求,我得到和在详细的日志中,我看到消息。如何使http客户端将证书作为X.509客户端证书发送?

  • 因此,为了实现这个逻辑,我认为我需要在客户端验证JWT令牌。Q1,这是一个明智的做法吗。 Q2,我正在使用的库似乎需要一个公钥才能使用它的函数。我似乎没有公钥,只有一个秘密,这是我刚刚编造的,所以它不是用一对生成的。我的公钥从何而来,或者是否有另一种方法来验证我的令牌而不使用此方法? 这一切似乎应该是显而易见的,我错过了一些东西,所以很抱歉,如果这是一个愚蠢的问题,但我似乎找不到答案?

  • 问题内容: 我需要导入证书,以便向Spring Boot应用程序中的外部服务发出http请求。 我该如何设置Spring Boot来做到这一点? 那里有很多信息,但我发现所有这些都令人困惑。似乎我可能只需要创建类似“ truststore.jks”密钥库的内容并导入正确的证书,然后将一些条目添加到我的application.properties中即可。 问题答案: 打开您的终端或 回答所有问题。在

  • whistle会自动生成根证书,并根据根证书对每个请求动态生成https证书,如果需要用自定义的证书,甚至根证书,可以有两种方式(只支持 .crt 格式的证书): 把普通证书对 (如:test.crt 和 test.key、test2.crt 和 test2.key 等等) 或根证书 (名字必须为 root.crt 和 root.key),放在系统的某个目录,如 /data/ssl,并在启动时添加