0

I'm writing my first question, please be patient if anything is missing. Any Feedback is welcome.

We have an issue with the generated oauth2RedirectUrl after migrating from a Windows 2012 R2 to a Windows 2016. The server is no longer containing the alias name but the technical server name.

We are using Spring Boot 2.6.0 including spring-boot-starter-oauth2-resource-server and springdoc-openapi-ui 1.5.12. Spring Boot is set up as a resource server with JWT authorization with Azure OAuth2.

We deploy a FAT Jar on windows machines and recently changed to a new server. Each machine is has a DNS entry with a technical name and a human readable alias. Lets say

  • human-readable-name1 for the old machine
  • human-readable-name2 for the new machine

We deployed the exact same software on both machines. We access the sawagger ui with

https://human-readable-name1.domain:port/swagger-ui.html

and

https://human-readable-name2.domain:port/swagger-ui.html

The response from both machines include the generated api-docs which are looking fine. Containing on both machines like

"servers": [
        {
            "url": "https://human-readable-name.domain:port",
            "description": "Generated server url"
        }
    ]

But the swagger-config change

OLD

{
    "configUrl": "/v3/api-docs/swagger-config",
    "oauth2RedirectUrl": "https://human-readable-name1:port/swagger-ui/oauth2-redirect.html",
    "url": "/v3/api-docs",
    "validatorUrl": ""
}

NEW

{
    "configUrl": "/v3/api-docs/swagger-config",
    "oauth2RedirectUrl": "https://technicalname:port/swagger-ui/oauth2-redirect.html",
    "url": "/v3/api-docs",
    "validatorUrl": ""
}

This breaks the log in as the token is no longer reaching the swagger ui client.

Any suggestions where I even can start looking for the reason?

Swagger config:

@Configuration
class OpenApiConfig {

@Value("${springdoc.oAuthFlow.authorizationUrl}")
private String authorizationUrl;

@Value("${springdoc.oAuthFlow.tokenUrl}")
private String tokenUrl;

@Bean
public OpenAPI customOpenAPI() {
    return new OpenAPI()                
            .components(new Components()
                    .addSecuritySchemes("security_auth", 
                            new SecurityScheme()
                                .type(SecurityScheme.Type.OAUTH2)
                                .flows(new OAuthFlows()
                                        .authorizationCode(new OAuthFlow()
                                                .authorizationUrl(authorizationUrl)
                                                .tokenUrl(tokenUrl)
                                                .scopes(new Scopes()
                                                        .addString("xxx", "xxx")
                                                    )
                                            )
                                    )
                        )
                )
            .addSecurityItem(new SecurityRequirement().addList("security_auth"))
            ;
}

}

Spring Boot yaml

spring.security.oauth2.resourceserver.jwt:
  jwk-set-uri: https://login.microsoftonline.com/common/discovery/v2.0/keys
  issuer-uri: https://login.microsoftonline.com/xxx/v2.0

springdoc:
  swagger-ui:
    oauth:
      clientId: 'xxx'
      use-pkce-with-authorization-code-grant: true
  oAuthFlow:
    authorizationUrl: https://login.microsoftonline.com/xxx/oauth2/v2.0/authorize
    tokenUrl: https://login.microsoftonline.com/xxx/oauth2/v2.0/token
Andli
  • 1
  • 1

0 Answers0