gpt4 book ai didi

java - Jaspic ServerAuthModule 委托(delegate)给 JAAS Krb5LoginModule

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:41:45 24 4
gpt4 key购买 nike

我必须编写一个自定义的 Jaspic ServerAuthModule(它需要向 HTTP 响应和 HTTP 请求添加一个专有的身份验证 Cookie,以便传播到应用服务器上运行的应用程序)。身份验证必须使用 Kerberos、SPNEGO 完成。

要使用的应用服务器是 JBOSS EAP 6.4.x

我设法使用 JAAS Krb5LoginModule 进行身份验证。

我使用的 JBOSS EAP Standone.xml:

  <security-domain name="host" cache-type="default">
<authentication>
<login-module code="com.sun.security.auth.module.Krb5LoginModule" flag="required">
<module-option name="debug" value="true"/>
<module-option name="principal" value="HTTP/macbookAirRCH@EXAMPLE.COM"/>
<module-option name="storeKey" value="true"/>
<module-option name="useKeyTab" value="true"/>
<module-option name="doNotPrompt" value="true"/>
<module-option name="keyTab" value="/Users/jet/Downloads/kerberos/macbookAirRCH.keytab"/>
</login-module>
</authentication>
</security-domain>
<security-domain name="SPNEGO" cache-type="default">
<authentication>
<login-module code="SPNEGO" flag="required">
<module-option name="serverSecurityDomain" value="host"/>
</login-module>
</authentication>
<mapping>
<mapping-module code="SimpleRoles" type="role">
<module-option name="user@EXAMPLE.COM" value="User,Admin"/>
</mapping-module>
</mapping>
</security-domain>

jboss-web.xml:

 <jboss-web>
<security-domain>SPNEGO</security-domain>
<valve>
<class-name>org.jboss.security.negotiation.NegotiationAuthenticator</class-name>
</valve>
<context-root>kerberosREST</context-root>
</jboss-web>

我还设法使用以下配置使定制的 JASPI 模块工作(extends org.jboss.as.web.security.jaspi.modules.WebServerAuthModule):

<security-domain name="testDomain" cache-type="default">
<authentication-jaspi>
<login-module-stack name="lm-stack">
<login-module code="SPNEGO" flag="required">
<module-option name="serverSecurityDomain" value="host"/>
</login-module>
</login-module-stack>
<auth-module code="ch.test.jaspic.CustomServerAuthModule" flag="required" login-module-stack-ref="lm-stack"/>
</authentication-jaspi>
<mapping>
<mapping-module code="SimpleRoles" type="role">
<module-option name="user@EXAMPLE.COM" value="User,Admin"/>
</mapping-module>
</mapping>
</security-domain>

jboss-web.xml:

<jboss-web>
<security-domain>testDomain</security-domain>
<valve>
<class-name>org.jboss.as.web.security.jaspi.WebJASPIAuthenticator</class-name>
</valve>
<context-root>kerberosREST</context-root>
</jboss-web>

如何使用默认的 JAAS Krb5LoginModule?

我应该在 jboss-web.xml 中包含这两个阀吗? (顺序很重要)

jboss-web.xml:

<jboss-web>
<security-domain>testDomain</security-domain>
<valve>
<class-name>org.jboss.security.negotiation.NegotiationAuthenticator</class-name>
</valve>
<valve>
<class-name>org.jboss.as.web.security.jaspi.WebJASPIAuthenticator</class-name>
</valve>
<context-root>kerberosREST</context-root>
</jboss-web>

提前致谢

最佳答案

The Application Server to be used is JBOSS EAP 6.4.x

不幸的是,JASPIC 在这个版本的 JBoss 上没有很好地实现。 JBoss EAP 7 会很好,应该会在今年或明年初发布(如果一切顺利的话)(但没有人知道,甚至 JBoss 的人也不知道)。 EAP 7 有几个测试版,最新的一个称为 JBoss WildFly 10,稍早一点的称为 EAP 7 beta 1。

一般来说,有一个 JAAS 桥,您可以在其中让 JASPIC SAM 调用您的 JAAS 登录模块。您需要了解 JASPIC SAM 是身份验证机制,而 JAAS 登录模块是身份存储。

我很确定您不需要 JAAS 登录模块的 JBoss 特定配置。这只需要让 JBoss 内部代码(例如,它们对 Servlet FORM 身份验证机制的实现)找到该模块。

如果使用 JASPIC,则由 SAM 控制。

有关网桥配置文件,请参阅本文以获取更多信息:

https://blogs.oracle.com/nasradu8/entry/loginmodule_bridge_profile_jaspic_in

关于java - Jaspic ServerAuthModule 委托(delegate)给 JAAS Krb5LoginModule,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36119266/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com