Swagger mit OAuth2 absichern
Swagger kann mit einigen weniger Annotation innerhalb einer SpringBoot Anwendung abgesichert werden. Dadurch kann die API im Entwicklungsprozess einfacher direkt genutz werden und es müssen keine Workarounds oder abgespeckte dev-profile ohne entsprechende Securityeinstellungen angelegt werden.
Was also benötigen wir:
Eine wichtige Annotation auf der Startclass ist
@SecurityScheme(
name = “swaggersec”,
type = SecuritySchemeType.OAUTH2,
flows = @OAuthFlows(
implicit = @OAuthFlow(
authorizationUrl = “http://oauth2.autorizationprovider
/realms/swaggersec/protocol/openid-connect/auth”,
tokenUrl = “http://oauth2.autorizationprovider /realms/swaggersec/protocol/openid-connect/token”
)
)
)
Diese Annotation erstellt ein SecuritySheme, das in der Anwendung auf alle Endpoints genutz werden kann. Es enthält die URL des Authenticationprovider und kann auch durch von aussen konfigurierbare properties ersetz werden.
Eine weitere Annotation auf den jeweils zu sichernden Endpoints ist:
@SecurityRequirement(name = “swaggersec”)
Jetzt ist das Shema „swaggersec“ vollständig Konfiguriert und über den normalen Aufruf für jedes Profil verfügbar.
Es gibt nun die Möglichkeit beim Testen der Endpoints über Swagger die normale Securitychain einzuhalten.
