GEDOPLAN
Web SecuritySpring

Spring Boot Swagger Keycloak

Web SecuritySpring
2020 07 02 12 09 28 window
2020 07 02 12 09 28 window

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")));
        }

}

 

1 Kommentar. Hinterlasse eine Antwort

  • Also if you want to fill client id automatically use following in your application.properties file

    springdoc.swagger-ui.oauth.clientId=myClientId
    springdoc.swagger-ui.oauth.clientSecret=clientSecret

    Antworten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Bitte füllen Sie dieses Feld aus.
Bitte füllen Sie dieses Feld aus.
Bitte gib eine gültige E-Mail-Adresse ein.
Sie müssen den Bedingungen zustimmen, um fortzufahren.

Autor

Diesen Artikel teilen

LinkedIn
Xing

Gibt es noch Fragen?

Fragen beantworten wir sehr gerne! Schreibe uns einfach per Kontaktformular.

Kurse

weitere Blogbeiträge

i18n 1
Webprogrammierung

Angular, i18n

Internationalisierung. Eine typische Aufgaben bei der Implementierung von Web-Anwendungen. Diese Anforderung macht auch vor Angular nicht halt. Hier bieten sich…

Work Life Balance. Jobs bei Gedoplan

We are looking for you!

Lust bei GEDOPLAN mitzuarbeiten? Wir suchen immer Verstärkung – egal ob Entwickler, Dozent, Trainerberater oder für unser IT-Marketing! Schau doch einfach mal auf unsere Jobseiten! Wir freuen uns auf Dich!

Work Life Balance. Jobs bei Gedoplan

We are looking for you!

Lust bei GEDOPLAN mitzuarbeiten? Wir suchen immer Verstärkung – egal ob Entwickler, Dozent, Trainerberater oder für unser IT-Marketing! Schau doch einfach mal auf unsere Jobseiten! Wir freuen uns auf Dich!