Like ClientRegistrations
in Spring Security's OAuth 2.0 support, Spring Security's SAML 2.0 support can now prepare a RelyingPartyRegistration.Builder
from a given metadata endpoint as of 5.4.0-RC1
.
It would be nice for an application to be able to do the following:
spring:
security:
saml2:
relyingparty:
registration:
example:
identityprovider:
metadata-uri: https://simplesaml-for-spring-saml.cfapps.io/saml2/idp/metadata.php
in order to reduce configuration.
In the absence of a RelyingPartyRegistrationRepository
in the application context, Spring Boot could do:
RelyingPartyRegistration registration = RelyingPartyRegistrations
.fromMetadataLocation(metadataUri)
.registrationId(registrationId)
.build()
Any SP configuration should still be provided to the builder. For example, if the application also specifies signing keys:
spring:
security:
saml2:
relyingparty:
registration:
example:
signing.credentials:
- private-key-location: "classpath:credentials/rp-private.key"
certificate-location: "classpath:credentials/rp-certificate.crt"
identityprovider:
metadata-uri: https://simplesaml-for-spring-saml.cfapps.io/saml2/idp/metadata.php
then these should still be configured:
// ...
.registrationId(registrationId)
.signingX509Credentials(c -> c.add(privateKey, certificate))
.build()
Note that Spring Boot's auto configuration currently errors if there are no signing keys specified by the application. From a validation standpoint, though, if RelyingPartyRegistration#getAssertingPartyDetails#wantAuthnRequestsSigned
returns false
, there is no need for the application to specify these keys.
Comment From: wilkinsona
Closing in favour of #23045.