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:

    <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>

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.