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 |