Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.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
Java SSO使用SAML和Spring Security for REST服务_Java_Spring_Security_Single Sign On_Saml - Fatal编程技术网

Java SSO使用SAML和Spring Security for REST服务

Java SSO使用SAML和Spring Security for REST服务,java,spring,security,single-sign-on,saml,Java,Spring,Security,Single Sign On,Saml,我在SpringBoot上有一个REST服务,现在需要使用SAML向其中添加SSO。我是SAML/Spring安全方面的新手,试图了解需要添加到我的应用程序中的主要部分 我的IT提供的元数据文件: <md:EntityDescriptor ID="Lusm3k0_RWEBKgnQ" cacheDuration="PT1440M" entityID="XXX.UAT.SAML2.0" xmlns:m

我在SpringBoot上有一个REST服务,现在需要使用SAML向其中添加SSO。我是SAML/Spring安全方面的新手,试图了解需要添加到我的应用程序中的主要部分

我的IT提供的元数据文件:

<md:EntityDescriptor ID="Lusm3k0_RWEBKgnQ" cacheDuration="PT1440M" entityID="XXX.UAT.SAML2.0"
                 xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata">
<md:IDPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol"
                     WantAuthnRequestsSigned="false">
    <md:KeyDescriptor use="signing">
        <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
            <ds:X509Data>
                <ds:X509Certificate>
                    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
                </ds:X509Certificate>
            </ds:X509Data>
        </ds:KeyInfo>
    </md:KeyDescriptor>
    <md:ArtifactResolutionService index="0" Location="https://SITE-XXX.com/idp/ARS.ssaml2"
                                  Binding="urn:oasis:names:tc:SAML:2.0:bindings:SOAP" isDefault="true"/>
    <md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"
                            Location="https://SITE-XXX.com/idp/SLO.saml2"/>
    <md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
                            Location="https://SITE-XXX.com/idp/SLO.saml2"/>
    <md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact"
                            Location="https://SITE-XXX.com/idp/SLO.saml2"/>
    <md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:SOAP"
                            Location="https://SITE-XXX.com/idp/SLO.ssaml2"/>
    <md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
                            Location="https://SITE-XXX.com/idp/SSO.saml2"/>
    <md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"
                            Location="https://SITE-XXX.com/idp/SSO.saml2"/>
    <md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact"
                            Location="https://SITE-XXX.com/idp/SSO.saml2"/>
    <md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:SOAP"
                            Location="https://SITE-XXX.com/idp/SSO.saml2"/>
    <saml:Attribute Name="email" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"
                    xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"/>
</md:IDPSSODescriptor>
<md:AttributeAuthorityDescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
    <md:AttributeService Location="https://SITE-XXX.com/idp/attrsvc.ssaml2"
                         Binding="urn:oasis:names:tc:SAML:2.0:bindings:SOAP"/>
</md:AttributeAuthorityDescriptor>
<md:ContactPerson contactType="administrative">
    <md:Company>XXX, Inc.</md:Company>
    <md:GivenName>Global</md:GivenName>
    <md:SurName>Directory Services</md:SurName>
    <md:EmailAddress>IAM_SSO_Ops@XXX.com</md:EmailAddress>
</md:ContactPerson>
</md:EntityDescriptor>

2.C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C2.在未来10年内,我们将在未来10年内完成一项研究。在未来10年内,我们将在未来10年内完成一项研究,在未来10年内完成一项研究,一个研究,一个研究,一个研究,一个研究,一个研究,一个研究,一个研究,一个研究,一个研究,一个研究,一个研究,一个研究,一个研究,一个研究,一个研究,一个研究,一个研究,一个研究,一个研究,一个研究,一个研究,一个研究,一个研究,一个研究,一个研究,一个研究,一个研究,一个研究,一个研究,一个研究,一个研究,一个研究,一个研究,一个研究,一个研究,一个研究,一个研究,一个研究,一个研究,一个研究,一个研究,一个研究,一个研究,一个研究,一个研究,一个研究,一个研究,一个研究,2西武夫4.中国的一个中国的一家中国的一家中国的一家中国的一家中国的一家中国的一家中国的一家中国的一家中国的一家中国的一家中国的一家中国的一家中国的一家中国的一家中国的一家中国的一家中国的一家中国的一家中国的一家中国的一家中国的一家中国的一家中国的一家中国的一家中国的一家中国的一家,一家中国的一家中国的一家中国的一家在一家中国的一家中国的一家中国的一家中国的一家中国的一家中国的一家中国的一家中国的一家中国的一家中国的一家中国的一家中国的一家中国的一家中国的一家中国的一家中国的一家中国的一家中国的一家中国的一家中国的一家中国的一家中国的一家中国的一家中国的一家中国的一家中国的一家中国的一家中国的一家中国R9QHy62.C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C+ciB5d5ExlNLaP8PFe2.在一些学校的学校,他们的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校的学校DambggrBGefbqccary5LbnRydxN0Ld5LdC9YcGewcaygz4EmaqicGcGcGcGcGcGcGcJbGbGcWwjajbGbGbGr0cDovL29JC3UZW50CNVzDc5UzXQWyKwyKwWbGc2H2H0H0Dh5LdVzDc5UzDc5UzZDc5UzZDc5UzXxVbWfQbFbFbFbFbWbWfWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbEbivpnbSI9I5Mdsn6k4L+kr+MA4CpPP9osmfMOwZ5aCbQP/xthZD+HURHYPYPDGNKD020/V+doHv6/H1rCIJBtoB58WHseZ4SMePcIp+zYjOozgZ/GM0JMSFREPRYSFR59YBSNIMASTHC440RK6GGJ51F1X5QT6OWBQMQAQHAHC8AE2ZQLNSRME4I+LAN97FBYVE15544WMR7FXAACZ1GM/NVHSSGS8J8JCBLYBRL5CMR5ZM+K7FY8K7K7KBKBKFY8BKB7BKFY8W/N7KFYV7BKBKZZZW==
三十、 公司。
全球的
目录服务
我是苏_Ops@XXX.com
在pom.xml中,我添加了依赖项:

    <dependency>
        <groupId>org.springframework.security.extensions</groupId>
        <artifactId>spring-security-saml2-core</artifactId>
        <version>2.0.0.M31</version>
    </dependency>

org.springframework.security.extensions
spring-security-saml2-core
2.0.0.M31
如何为Spring SAML配置和使用此元数据?配置文件应该是什么样子? 我只需要最简单的例子,其中/**所有的休息点都是安全的

我在互联网上搜索的解决方案没有使用这种元数据,我不知道如何正确使用它


谢谢。

SAML有一点学习曲线,因为它包含许多术语。在这里,端到端的示例可能不可能实现,但我可以告诉您它是如何工作的

管理员提供的xml是IdP的联合元数据。在SAML中,SAML服务提供者和SAML IdP都通过xml文件或作为返回此xml内容的服务交换元数据。
联合元数据包含诸如签名/加密证书、端点信息、支持的协议等信息。
与上述文件类似,您必须创建自己的联合元数据文件,并将其提供给管理员,并要求他将您的应用注册为IdP内的服务提供商

给出了如何在春季开始使用SAML

关于保护RESTAPI-

  • 您应该添加一个过滤器来检查身份验证令牌
  • 如果令牌不存在,则重定向到IdP
  • 身份验证完成后,IdP将重定向回 应用程序中的已知端点(断言使用者端点) 您将从中获得SAML断言
  • 提取此断言以了解用户详细信息。为此,您必须使用OpenSAML库
  • 为应用程序创建单独的会话,生成令牌或 cookie并将其作为响应发送。下一次,请期待此令牌 每个休息电话