Spring Boot Swagger Keycloak

Spring Boot + Swagger sind ein eingespieltes Team, um die eigenen Rest-APIs als OpenApi Beschreibung zur Verfügung zu stellen. Dafür bedarf es kaum Aufwand, reicht es doch die entsprechenden Abhängigkeiten per Maven zu definieren (für OpenApi 3.0 : org.springdoc, springdoc-openapi-ui).

Klar. In aller Regel wollen wir zusätzliche Information für unsere Schnittstellen bereitstellen und spätestens, wenn unsere Rest-Aufrufe eine Authentifizierung benötigen bedarf es zusätzlicher Konfiguration um z.B. die swagger-ui nutzen zu können. Setzen wir dabei auf eine OAuth2 Variante, z.B. mit Keycloak könnte die einfachste der Konfigurationen so aussehen:

@Configuration
public class OpenApiConfig {

        @Value("${app.version}")
        private String appVersion;

        @Value("${app.name}")
        private String appName;

        @Value("${app.security.auth-server-url}")
        private String authServerUrl;

        @Value("${app.security.realm}")
        private String realm;

        @Value("${app.security.client-ui}")
        private String client;

        @Bean
        public OpenAPI customOpenAPI() {
                OAuthFlows flows = new OAuthFlows();
                OAuthFlow flow = new OAuthFlow();

                flow.setAuthorizationUrl(authServerUrl + "/realms/" + realm + "/protocol/openid-connect/auth");

                Scopes scopes = new Scopes();
                flow.setScopes(scopes);
                flows = flows.implicit(flow);

                return new OpenAPI()
                                .components(new Components().addSecuritySchemes("keycloak",
                                                new SecurityScheme().type(SecurityScheme.Type.OAUTH2).flows(flows)))
                                .info(new Info().title(appName)
                                                .version(appVersion))
                                .addSecurityItem(new SecurityRequirement().addList("keycloak",
                                                Arrays.asList("read", "write")));
        }

}

Über Dominik Mathmann
Dominik Mathmann arbeitet als Berater, Entwickler und Trainer bei der GEDOPLAN GmbH. Auf Basis seiner langjährigen Erfahrung in der Implementierung von Java-EE-Anwendungen leitet er Seminare, hält Vorträge und unterstützt Kunden bei der Konzeption und Realisierung von Webanwendungen vom Backend bis zum Frontend. Sein derzeitiger Schwerpunkt liegt dabei auf der Entwicklung von JSF-Anwendungen. Er sieht die stärker werdende Position von JavaScript-Frameworks jedoch positiv und beschäftigt sich darüber hinaus mit Webframeworks wie Angular.

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden /  Ändern )

Google Foto

Du kommentierst mit Deinem Google-Konto. Abmelden /  Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden /  Ändern )

Verbinde mit %s

%d Bloggern gefällt das: