OpenSAML サポート

Spring Security は、SAML 2.0 機能を実装するための API を提供し、OpenSAML を使用したデフォルトの実装も提供します。

Spring Security は OpenSAML の複数のバージョンを同時にサポートするため、コンポーネントでは次の命名規則が使用されます。

  • サポートされているすべてのバージョンで使用できるコンポーネントは、OpenSamlXXX という名前になります。

  • OpenSAML 4.x をターゲットとするコンポーネントはすべて OpenSaml4XXX という名前になります

  • OpenSAML 5.x をターゲットとするコンポーネントはすべて OpenSaml5XXX という名前になります

spring-security-config は、アプリケーションが現在使用しているバージョンを検出して、デフォルトでこれらの実装を選択します。例: OpenSAML 4 を使用している場合、Spring Security は OpenSaml4XXX コンポーネントを使用します。

OpenSAML 4 の選択

Spring Security はデフォルトで OpenSAML 4 に依存しているため、spring-security-saml 依存関係をインポートする以外に使用を開始するために何もする必要はありません。

OpenSAML 5 の選択

OpenSAML を使用するには、次のように opensaml 依存関係をオーバーライドする必要があります。

<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 に分割されるため、除外する必要があります。