<dependency>
<groupId>de.faktorzehn.commons</groupId>
<artifactId>f10-commons-auth-oauth2-client</artifactId>
</dependency>
<dependency>
<groupId>de.faktorzehn.commons</groupId>
<artifactId>f10-commons-auth-oauth2-resourceserver</artifactId>
</dependency>
<dependency>
<groupId>de.faktorzehn.commons</groupId>
<artifactId>f10-commons-spring-autoconfiguration</artifactId>
</dependency>
Setup
Single-Sign-On (SSO)
Der Product Designer kann auch mit Single-Sign-On betrieben werden. Mit dem Archetype kann die Anwendung mit oder ohne SSO generiert werden. Um SSO manuell einzurichten (oder im Nachhinein hinzuzufügen) müssen folgende zusätzliche Schritte durchgeführt werden.
In der POM müssen folgende Dependencies hinzugefügt werden:
In der Konfigurationsdatei src/main/resources/application.yml
muss der zu verwendende Keycloak-Server konfiguriert werden, z. B.
keycloak-client:
issuer-uri: <YOUR KEYCLOAK ISSUER-URI HERE>
spring:
security:
oauth2:
client:
registration:
oauth2:
client-id: <YOUR CLIENT ID HERE>
client-secret: <YOUR CLIENT SECRET HERE>
client-name: Product-Designer
scope: openid
redirect-uri: "{baseUrl}/login/oauth2/code/{registrationId}"
authorization-grant-type: authorization_code
f10-service-account:
client-id: <YOUR CLIENT ID HERE>
client-secret: <YOUR CLIENT SECRET HERE>
scope: openid
authorization-grant-type: client_credentials
provider: oauth2
provider:
oauth2:
issuer-uri: ${keycloak-client.issuer-uri}
user-name-attribute: preferred_username
resourceserver:
jwt:
issuer-uri: ${keycloak-client.issuer-uri}
Details siehe f10-commons Dokumentation.
Die SampleProductDesignerConfig.java
muss um weitere Beans ergänzt werden. Es werden Beans für einen RoleMapper
und TenantMapper
benötigt. Siehe auch hier die Dokumentation von f10-commons. Für die F10 Umgebung gibt es ein spezielles productdesigner-f10 Modul mit vorgefertigten Implementierungen des RoleMapper
und TenantMapper
.
@Primary
@Component
public class SampleProductDesignerConfig {
@Bean
RoleMapper roleMapper() {
return new F10ProductDesignerRoleMapper();
}
@Bean
TenantMapper tenantMapper() {
return new F10ProductDesignerTenantMapper();
}
@SessionScope
@Bean
public ProductDesignerPermissionService permissionService(Optional<User> user,
IModifiableRuntimeRepository repository,
ProductDesignerConfigurationProperties properties) {
return new DefaultProductDesignerPermissionService(user.orElse(new LocalUser()), repository,
properties.readOnlyMode() ? ProductDesignerMode.READ_ONLY_MODE : ProductDesignerMode.EDIT_MODE);
}
}
Sollte die Konfigurationsklasse neu sein – nicht vergessen, bei der @SpringBootApplication -Annotation das entsprechende Package in scanBasePackages einzutragen.
|