OpenSAML 支持
Spring Security 提供了用于实现 SAML 2.0 特性的 API,同时也提供了使用 OpenSAML 的默认实现。
由于 Spring Security 同时支持多个版本的 OpenSAML,因此组件使用了以下命名约定
-
可用于所有支持版本的任何组件命名为
OpenSamlXXX
。 -
针对 OpenSAML 4.x 的任何组件命名为
OpenSaml4XXX
-
针对 OpenSAML 5.x 的任何组件命名为
OpenSaml5XXX
spring-security-config
默认通过检测您的应用当前使用的 OpenSAML 版本来选择相应的实现。例如,如果您使用 OpenSAML 4,Spring Security 将使用 OpenSaml4XXX
组件。
选择 OpenSAML 5
要使用 OpenSAML,您应按如下方式覆盖 opensaml
依赖项
-
Maven
-
Gradle
<dependencies>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-saml2-service-provider</artifactId>
<exclusions>
<exclusion>
<groupId>org.opensaml</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.opensaml</groupId>
<artifactId>opensaml-saml-api</artifactId>
<version>5.1.2</version>
</dependency>
<dependency>
<groupId>org.opensaml</groupId>
<artifactId>opensaml-saml-impl</artifactId>
<version>5.1.2</version>
</dependency>
</dependencies>
dependencies {
constraints {
implementation "org.opensaml:opensaml-core-api:5.1.2"
implementation "org.opensaml:opensaml-core-impl:5.1.2"
implementation "org.opensaml:opensaml-saml-api:5.1.2"
implementation "org.opensaml:opensaml-saml-impl:5.1.2"
}
// ...
implementation ('org.springframework.security:spring-security-saml2-service-provider') {
exclude group: "org.opensaml", module: "opensaml-core"
}
// ...
}
进行排除是必要的,因为 OpenSAML 5 将 opensaml-core 分成了 opensaml-core-api 和 opensaml-core-impl |