第3章 Spring Boot での Red Hat Single Sign-On の使用
Red Hat Single Sign-On クライアントアダプターは、Red Hat Single Sign-On でアプリケーションとサービスのセキュリティーを簡単に保護するためのライブラリーです。Keycloak Spring Boot アダプターを使用して、Spring Boot プロジェクトをセキュアにすることができます。
3.1. Spring Boot コンテナーでの Red Hat Single Sign-On の使用
Spring Boot アプリケーションをセキュアにするには、Keycloak Spring Boot アダプター JAR をプロジェクトに追加します。Keycloak Spring Boot アダプターは Spring Boot の自動設定機能を活用するため、Keycloak Spring Boot スターターをプロジェクトに追加することのみが必要になります。
手順
Keycloak Spring Boot スターターを手動で追加するには、以下をプロジェクトの
pom.xml
に追加します。<dependency> <groupId>org.keycloak</groupId> <artifactId>keycloak-spring-boot-starter</artifactId> </dependency>
アダプター BOM 依存関係を追加します。
<dependencyManagement> <dependencies> <dependency> <groupId>org.keycloak.bom</groupId> <artifactId>keycloak-adapter-bom</artifactId> <version>3.4.17.Final-redhat-00001</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
Keycloak を使用するように Spring Boot プロジェクトを設定します。
keycloak.json
ファイルの代わりに、通常の Spring Boot 設定を使用して Spring Boot アダプターのレルムを設定できます。たとえば、以下の設定をsrc/main/resources/application.properties
ファイルに追加します。keycloak.realm = demorealm keycloak.auth-server-url = http://127.0.0.1:8080/auth keycloak.ssl-required = external keycloak.resource = demoapp keycloak.credentials.secret = 11111111-1111-1111-1111-111111111111 keycloak.use-resource-role-mappings = true
keycloak.enabled = false
を設定して、Keycloak Spring Boot Adapter (テストなど) を無効できます。Policy Enforcer を設定するには、keycloak.json
とは異なり、policy-enforcer
ではなくpolicy-enforcer-config
を使用する必要があります。web.xml
に Java EE セキュリティー設定を指定します。Spring Boot Adapter はlogin-method
を KEYCLOAK に設定し、起動時にsecurity-constraints
を設定します。設定例を以下に示します。keycloak.securityConstraints[0].authRoles[0] = admin keycloak.securityConstraints[0].authRoles[1] = user keycloak.securityConstraints[0].securityCollections[0].name = insecure stuff keycloak.securityConstraints[0].securityCollections[0].patterns[0] = /insecure keycloak.securityConstraints[1].authRoles[0] = admin keycloak.securityConstraints[1].securityCollections[0].name = admin stuff keycloak.securityConstraints[1].securityCollections[0].patterns[0] = /admin
注記: Spring アプリケーションを WAR としてデプロイする場合は、Spring Boot アダプターを使用しないでください。使用しているアプリケーションサーバーまたはサーブレットコンテナーの専用アダプターを使用します。Spring Boot には
web.xml
ファイルも含まれている必要があります。