Saml 2.0 Metadata
本站(springdoc.cn)中的内容来源于 spring.io ,原始版权归属于 spring.io。由 springdoc.cn 进行翻译,整理。可供个人学习、研究,未经许可,不得进行任何转载、商用或与之相关的行为。 商标声明:Spring 是 Pivotal Software, Inc. 在美国以及其他国家的商标。 |
解析 <saml2:IDPSSODescriptor>
metadata
你可以使用 RelyingPartyRegistrations
解析断言方的元数据。
当使用 OpenSAML vendor 支持时,生成的 AssertingPartyDetails
将是 OpenSamlAssertingPartyDetails
类型。这意味着你可以通过以下操作获得底层的OpenSAML XMLObject:
-
Java
-
Kotlin
OpenSamlAssertingPartyDetails details = (OpenSamlAssertingPartyDetails)
registration.getAssertingPartyDetails();
EntityDescriptor openSamlEntityDescriptor = details.getEntityDescriptor();
val details: OpenSamlAssertingPartyDetails =
registration.getAssertingPartyDetails() as OpenSamlAssertingPartyDetails;
val openSamlEntityDescriptor: EntityDescriptor = details.getEntityDescriptor();
生成 <saml2:SPSSODescriptor>
Metadata
你可以使用 saml2Metadata
DSL 方法发布元数据端点,如下所示:
-
Java
-
Kotlin
http
// ...
.saml2Login(withDefaults())
.saml2Metadata(withDefaults());
http {
//...
saml2Login { }
saml2Metadata { }
}
你可以使用该元数据终端点将依赖方注册到断言方。这通常就像找到正确的表单字段来提供元数据终端点一样简单。
默认情况下,元数据端点是 /saml2/metadata
,但它也响应 /saml2/metadata/{registrationId}
和 /saml2/service-provider-metadata/{registrationId}
。
你可以通过调用 DSL 中的 metadataUrl
方法来更改:
-
Java
-
Kotlin
.saml2Metadata((saml2) -> saml2.metadataUrl("/saml/metadata"))
saml2Metadata {
metadataUrl = "/saml/metadata"
}
改变 RelyingPartyRegistration
的查询方式
如果你有不同的策略来确定使用哪个 RelyingPartyRegistration
,你可以像下面这样配置自己的 Saml2MetadataResponseResolver
:
-
Java
-
Kotlin
@Bean
Saml2MetadataResponseResolver metadataResponseResolver(RelyingPartyRegistrationRepository registrations) {
RequestMatcherMetadataResponseResolver metadata = new RequestMatcherMetadataResponseResolver(
(id) -> registrations.findByRegistrationId("relying-party"));
metadata.setMetadataFilename("metadata.xml");
return metadata;
}
@Bean
fun metadataResponseResolver(val registrations: RelyingPartyRegistrationRepository): Saml2MetadataResponseResolver {
val metadata = new RequestMatcherMetadataResponseResolver(
id: String -> registrations.findByRegistrationId("relying-party"))
metadata.setMetadataFilename("metadata.xml")
return metadata
}