- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将 JBoss EAP 7.0 用作 SAML 服务提供者,“大部分”配置了它,但在我作为 SP 部署的应用程序抛出 403 时在最后一步遇到了问题。我有从 JBoss/PicketLink 获取调试日志以进一步排除故障。
联合流程主要工作 - 我从我的 SP 应用程序开始。签名的 authnRequest 将转到我的 IDP(不是 JBoss)。 IDP 正在接受请求,要求我登录,然后生成签名断言并将其发布回我在 JBoss 上的 SP 应用程序。此时我收到 403。
所以我知道 PicketLink 子系统(我通过 JBoss 控制台配置)已部署并正常工作,否则我永远不会首先获得签名的 authnRequest。
现在我正试图挤出一些调试,以便我可以进一步排除故障。我发现一些旧文档引用了 picketlink.xml 中的 EnableAuditing 属性,但这显然早于子系统配置方法。
我已经尝试为 PicketLink 创建一个日志文件,日志文件包含来自 org.picketlink.common 的消息,但仅此而已。没有消息是从实际的联合事件中创建的,甚至是 authnRequest 创建。
我的 standalone.xml 文件包含以下新元素(所有元素都是通过控制台创建的,日志记录部分除外):
<periodic-rotating-file-handler name="PICKETLINK" autoflush="true">
<formatter>
<named-formatter name="PATTERN"/>
</formatter>
<file relative-to="jboss.server.log.dir" path="picketlink.log"/>
<suffix value=".yyyy-MM-dd"/>
<append value="true"/>
</periodic-rotating-file-handler>
<logger category="org.picketlink">
<level name="DEBUG"/>
<handlers>
<handler name="PICKETLINK"/>
</handlers>
</logger>
和 PickeLink 子系统:
<subsystem xmlns="urn:jboss:domain:picketlink-federation:2.0">
<federation name="jboss-sp">
<identity-provider name="my-idp" url="https://********" security-domain="sp" external="true" support-signatures="true">
<trust>
<trust-domain name="***"/>
<trust-domain name="***:18080"/>
<trust-domain name="***:18443"/>
</trust>
</identity-provider>
<service-providers>
<service-provider name="testapp-war-0.0.5-SNAPSHOT-default.war" security-domain="sp" url="http://***:18080/testapp/protected"/>
<service-provider name="testapp-war-0.0.5-SNAPSHOT-secured.war" security-domain="sp" url="http://***:18080/testapp/protected" support-signatures="true"/>
</service-providers>
<key-store file="D:\\JBoss\\SSL\\samplepartner.jks" password="password" sign-key-alias="samplepartner" sign-key-password="password">
<keys>
<key name="***" host="***"/>
</keys>
</key-store>
</federation>
</subsystem>
感谢任何建议,谢谢!
最佳答案
我建议您查看 keycloak saml 适配器,因为 pickelink 已被弃用。
一些有用的链接: https://www.keycloak.org/docs/latest/securing_apps/#_saml-general-config
How to map third party IdP SAML attributes to my local application roles using keycloak-saml adapter
您还将获得更好的日志记录事件,只需像这样添加一个记录器:
<logger category="org.keycloak.saml">
<level name="DEBUG"/>
</logger>
现在,回到纠察链接和您原来的问题。
关于 403 错误,请确保您在 session 中获得正确的角色。我永远无法将它们从 picketlink 子系统中记录下来,实际上,如果您检查 github 中的代码,您将看不到太多记录语句……我知道这有点令人失望。
您可以使用非安全 JSP 来查看您拥有的角色。
<p>Is in role XXXX <%= request.isUserInRole("XXXX") %> </p>
如果您仍想探索使用 picketlink 的解决方案(我不推荐这样做),我将在此处留下一个曾经对我有用的配置。
请注意:1) 在安全域部分声明一个审计提供者。2) 它使用角色映射器,如果您不控制来自 IdP 服务器的角色,这将很方便。
希望对您有所帮助。
<extension module="org.wildfly.extension.picketlink"/>
<subsystem xmlns="urn:jboss:domain:picketlink-federation:1.1">
<federation name="my-federation">
<key-store file="./keyStore.jks" relative-to="java.home" password="pass123" sign-key-alias="sp" sign-key-password="pass123">
<keys>
<key name="idp" host="idpdomain.com"/>
</keys>
</key-store>
<identity-provider name="anyname" url="url to the sso endpoint" external="true" encrypt="false" support-signatures="true" strict-post-binding="true" ssl-authentication="false" support-metadata="true"/>
<service-providers>
<service-provider name="myapp.war" security-domain="saml-realm" url="https://spdomain.com/myapp/" post-binding="true" support-signatures="true" support-metadata="true" strict-post-binding="true" logout-page="/logout.jsp">
<handlers>
<handler name="SAML2LogOutHandler" class-name="org.picketlink.identity.federation.web.handlers.saml2.SAML2LogOutHandler"/>
<handler name="SAML2AuthenticationHandler" class-name="org.picketlink.identity.federation.web.handlers.saml2.SAML2AuthenticationHandler">
<handler-parameter name="CLOCK_SKEW_MILIS" value="120000"/>
<handler-parameter name="NAMEID_FORMAT" value="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent"/>
</handler>
<handler name="RolesGenerationHandler" class-name="org.picketlink.identity.federation.web.handlers.saml2.RolesGenerationHandler"/>
<handler name="SAML2SignatureGenerationHandler" class-name="org.picketlink.identity.federation.web.handlers.saml2.SAML2SignatureGenerationHandler"/>
<handler name="SAML2SignatureValidationHandler" class-name="org.picketlink.identity.federation.web.handlers.saml2.SAML2SignatureValidationHandler"/>
</handlers>
</service-provider>
</service-providers>
</federation>
</subsystem>
<security-domain name="saml-realm">
<authentication>
<login-module code="org.picketlink.identity.federation.bindings.jboss.auth.SAML2LoginModule" flag="required">
<module-option name="password-stacking" value="useFirstPass"/>
</login-module>
<login-module code="org.jboss.security.auth.spi.RoleMappingLoginModule" flag="required">
<module-option name="password-stacking" value="useFirstPass"/>
<module-option name="rolesProperties" value="${jboss.server.config.dir}/rolesMapping-roles.properties"/>
<module-option name="replaceRole" value="true"/>
</login-module>
</authentication>
<audit>
<provider-module code="org.picketlink.identity.federation.core.audit.PicketLinkAuditProvider"/>
</audit>
</security-domain>
关于jboss - JBoss EAP 7.0 上的 SAML 服务提供商,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42463526/
我是 JBoss 的新手,发现了很多不同的术语 - JBoss EAP、JBoss Server、Wildfly、Jboss Web,以及很多不是最新的或针对旧版本的文档。 我从哪里开始了解 JBos
JBoss ESB 服务器之间有什么区别(可在此处获得:http://jbossesb.jboss.org/downloads/) 和 JBoss fuse ( http://www.jboss.or
我在我的 PC 上安装了 JBoss 4 到目录 C:\JBoss4 并将环境变量 JBOSS_HOME 设置为此目录: JBOSS_HOME=C:\JBoss4 我需要在同一台 PC 上安装 JB
我有一个 JBoss 服务器正在运行并且想要部署一个服务。 该服务连接到在以下 xml 文件中配置的数据库 jdbc:postgresql://localhost:543
jboss 中的超时是如何工作的?网络应用程序如何知道何时重定向到登录页面? 只是为了澄清! -我知道如何在 jboss 上配置超时。我的问题是,Jboss 如何知道 session 已超时以及何时超
使用JBoss Forge启动新项目时,默认情况下该项目是使用Maven构建系统创建的。我如何利用Forge 2. *的Gradle插件使用Gradle而不是Maven创建项目? % forge Us
当前配置: 正在运行的16个Pod,基于JBoss TCP的集群以及google ping发现。容器作为状态集部署在Kubernetes集群上。 没有负载的初始群集按预期运行,没有任何单个问题,但是当
我以为这将是一个 JBoss 常见问题解答,但我找不到它。 我想同时运行 JBoss 4 和 JBoss 5。我通过将端口的前导数字更改为 9 手动更改了 JBoss 5 服务器/默认实例上的所有端口
我们在 JBoss AS 6 上实现了一些服务作为我们希望迁移到 JBoss AS 7 的单例服务。 这些服务在 jboss-service.xml 文件中声明,该文件位于 EJB 包中,类似于以下代
例如,如何确定我的简单 JBoss 4.2.3 服务器正在监听端口 8080? 这是我最接近的一次,但这不起作用: MBeanServerConnection server = (MBeanServe
我正在尝试找到从语法上确定我的程序是在 Jboss 5 还是 Jboss 7 (eap-6.1) 上运行的最佳方法。到目前为止,我找到的方法是特定于 jboss 5 或 jboss 7 的,这不起作用
我在域模式下使用 JBoss 6.4.8 版本。我想通过 CLI 添加这 4 个系统属性: 1- /host=myserver/server-config=node/system-property=j
在 JBoss 4 中,您可以在文件中设置对象的部署顺序( .jar 、 .war 、 .sar 等...): conf/xmdesc/org.jboss.deployment.MainDeploye
概括地说,JBoss 5 的关闭有什么作用?如果我只是杀死 java 进程而不是优雅地关闭 JBoss,可能会出现什么问题? 对于我的应用程序来说,正常的 JBoss 5 关闭大约需要 6 分钟,这个
我最近在 CentOS 6.7 服务器上安装了 JBoss AS 7。 jboss as 工作正常。为了测试,我部署了一个 .war 文件并对其进行了测试,效果很好!但现在我尝试从我的台式电脑访问相同
我有 jboss 应用程序。并想自动测试部署。并希望将此任务作为项目添加到 Hudson 我的愿景基于以下阶段: 将我的应用程序放到 JBoss(复制耳朵、配置、库等) 运行 JBoss 我有一台 L
我对 JBoss 很陌生。目前我有一个需求,我需要在 JBoss 上部署应用程序(已经在 Tomcat 上运行)。我下载了 JBoss,但是版本 7 中的目录结构不同。 我正在运行 bin\stand
我是 JBoss AS 7 的新手。我尝试在 JBoss AS 7 上部署我的 war 文件,这似乎工作正常。我的问题是在哪里可以看到部署的内容。 我希望它像 Tomcat 一样,它应该有一个探索的
我使用多播方法在两个不同的 JBoss 服务器之间配置了集群。 当我启动两个 JBoss 服务器时,两个服务器都将连接。 一天后,我收到以下消息 server.log 中的群集开始显示错误 05:28
为了打开/关闭我们产品的跟踪-“类别”或“记录器”标签,我们应该在jboss-log4j.xml中使用什么? 默认情况下,JBoss在jboss-log4j.xml中使用“类别”。 但据我所知,不赞成
我是一名优秀的程序员,十分优秀!