首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JBoss EAP7.0上的Service

JBoss EAP7.0上的Service
EN

Stack Overflow用户
提问于 2017-02-26 08:59:54
回答 1查看 1.2K关注 0票数 3

我正在尝试使用SAMLEAP7.0作为JBoss服务提供商,对其进行“大部分”配置,但在最后一步遇到问题,因为我作为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 fle包含以下新元素(除了日志记录部分之外,所有元素都是通过控制台创建的):

代码语言:javascript
复制
       <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子系统:

代码语言:javascript
复制
    <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>

任何建议,谢谢!

EN

回答 1

Stack Overflow用户

发布于 2020-04-04 11:29:31

我建议看一下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

您还将获得更好的日志记录活动,只需添加一个如下所示的记录器:

代码语言:javascript
复制
        <logger category="org.keycloak.saml">
            <level name="DEBUG"/>
        </logger>

现在,回到picketlink和你最初的问题。

关于403错误,请确保您在会话中获得了正确的角色。实际上,如果你检查github中的代码,你不会看到太多的日志语句……我知道这有点令人失望。

您可以使用不安全的JSP来查看您所拥有的角色。

代码语言:javascript
复制
<p>Is in role XXXX <%= request.isUserInRole("XXXX") %> </p>

如果你仍然想使用picketlink来探索解决方案,我不推荐,我在这里留下了一个过去对我有效的配置。

请注意: 1)在安全域节中声明审核提供程序。2)它使用角色映射器,如果您不控制来自IdP服务器的角色,这将非常方便。

希望能有所帮助。

代码语言:javascript
复制
     <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>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42463526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档