Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JBoss EAP 7.0上的SAML服务提供商_Jboss_Saml_Picketlink - Fatal编程技术网

JBoss EAP 7.0上的SAML服务提供商

JBoss EAP 7.0上的SAML服务提供商,jboss,saml,picketlink,Jboss,Saml,Picketlink,我尝试将JBoss EAP 7.0用作SAML服务提供商,对其进行“大部分”配置,但在最后一步,当我部署为SP的应用程序抛出403时遇到问题。我无法从JBoss/PicketLink中获取调试日志以进一步排除故障 联合流程主要工作—我从SP应用程序开始。签名的authnRequest将被发送到我的IDP(不是JBoss)。IDP正在接受请求,挑战我登录,然后生成签名断言并将其发回JBoss上的SP应用程序。在这一点上,我收到了403 因此,我知道PicketLink子系统(我通过JBoss控制台

我尝试将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创建

My standalone.xml fle包含以下新元素(除日志部分外,所有元素均通过控制台创建):


以及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>


任何建议,谢谢

我建议看一下KeyClope saml适配器,因为pickelink已经被弃用了

一些有用的链接:

您还将获得更好的日志记录活动,只需添加如下日志记录程序:

        <logger category="org.keycloak.saml">
            <level name="DEBUG"/>
        </logger>

现在,回到picketlink和您的原始问题

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

您可以使用非安全JSP查看您拥有哪些角色

<p>Is in role XXXX <%= request.isUserInRole("XXXX") %> </p>
担任XXXX角色

如果您仍然想探索使用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>


我知道这是一个老问题,但我想知道你是否解决了它。我不是专家,但我可以共享一个适用于我的picketlink子系统配置。你好,亚历克斯-事实上,我从来没有让它工作过,我放弃了。我仍然有我用来测试这个的虚拟机的快照,所以如果你有一个正常的配置,我想试试。谢谢
     <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>