- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我必须编写一个自定义的 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/
我试图弄清楚登录模块标志在 JAAS 中是如何工作的(使用 JBoss 5.1 EAP),我遇到了一个令人费解的情况,我希望有人能为我澄清一下。 对于背景,我的 login-config.xml 如下
我正在运行 Tomcat 7 - 不使用 Weblogic 或 JBoss。如何让 LoginModule 访问 HttpServletRequest? 我知道如果你在 jboss 中,你可以通过 P
我正在尝试为 Wildfly 8.0.0.CR1 编写我自己的名为 CustomLoginModule 的登录模块,它在 standalone.xml 中注册了一个安全域:
我发现了一些关于如何编写自定义领域和 loginModule 的很好的提示。我想知道是否可以在自定义 loginModule 中访问远程 EJB。 就我而言,我有远程 EJB 提供对用户实体的访问(通
我正在运行 Tomcat 6.0.29 并创建了我自己的领域和登录模块。它们在 server.xml 中定义如下: 我已将包含这些类的库添加到我的 tomcat/lib 文件夹中。除此之外,我没有更
我使用的是 Tomcat 8,需要在 LoginModule 之外获取主题。我已经尝试过了: Subject subject = Subject.getSubject(AccessController
我正在尝试编写一个 LoginModule 来使用 Jackrabbit 存储库对用户进行身份验证。但是,我希望它检查存储在存储库本身中的凭据。所以问题是,在我的 LoginModule 中,我必须再
我正在尝试让 Glassfish 中的自定义安全领域正常工作(我尝试了 3.0.1 final 和 3.1 B33)。我阅读了几乎所有关于此的教程,但它不适用于我的系统。我收到错误 Login fai
我正在使用 jboss-as-7.1.0.Final-SNAPSHOT 并尝试设置使用数据库的自定义登录模块。我按照 AS7 文档中的说明在 standalone.xml 中配置新的安全域,在 jbo
LoginModule接口(interface)有这个方法: public void initialize(Subject subject, CallbackHandler callbackHandl
我做了一个这样的Form Realm: 数据库有用户(及其组)的条目 web.xml FORM TipRealm /
我目前正在尝试编写一些登录模块以使用户能够登录到 Java 应用程序。这是我的 .java.login.config 文件: "Java Application" { path.to.logi
我可能只是误会了 JAAS。我开始研究 JAAS,因为我需要为应用程序提供自定义的 LoginModule。 但每次我看到 LoginModule 的例子时,他们总是将主题定义为私有(private)
有人有创建使用 SAML 来验证和授权用户的 JAAS LoginModule 的经验吗?据我了解 JAAS,这可能需要一个能够理解并解析 SAML 消息的自定义 CallbackHandler。 在
创建了一个 LoginContext 对象并传递了一个名称,然后我使用该条目创建了一个 .conf 文件。我在代码中设置了系统属性“java.security.auth.login.config”,其
Kafka 可以配置为使用多种身份验证机制:纯文本用户名/密码、Kerberos 或 SSL。前 2 个使用 SASL,其中需要一个 JAAS 配置文件。 对于纯文本身份验证方法,配置如下(取自 do
我想从 JAAS loginModule 读取我的应用程序 WEB-INF 文件夹或我的 tomcat/apache 服务器中的属性文件。但我不明白如何以独立于主机名的方式正确引用 LoginModu
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 2 年前。 Improve t
我开发了一个实现javax.security.auth.spi.LoginModule的LoginModule,并且我使用org.apache.catalina.realm.JAASRealm。有什么
我已经实现了一个 LoginModule 来执行一些自定义身份验证,并使用 LoginContext 类的 login() 方法调用身份验证。登录模块的 login() 和 commit() 方法被成
我是一名优秀的程序员,十分优秀!