使用Kotlin在Sping Boot 中为OAuth 2.0配置Swagger UI

voase2hg  于 2023-03-11  发布在  Kotlin
关注(0)|答案(1)|浏览(138)

我正在尝试使用Kotlin在Sping Boot 中使用配置类配置OpenAPI 3 for OAuth 2.0。
即使我在application.yml中设置了oauth2RedirectUrl,当我在swagger UI中单击authorize以获取新令牌来发送请求时,重定向URL并不像预期的那样工作,我得到了默认的重定向URL,名称类似于这样(我相信它是default redirectUrl):&redirect_uri=http://localhost:8080/oauth2-redirect.html而不是(我在application.yaml中配置的)
访问http://localhost:8080/swagger-ui/index.html?queryConfigEnabled=true&url=/v3/api-docs上的Swagger-UI
然后单击授权按钮并使用预配置的值。

然后,IdentityProviderController打印配置值,例如redirect_uri
redirect_uri看起来像http://localhost:8080/swagger-ui/oauth2-redirect.html,并且缺少swagger-ui:oauth2RedirectUrl路径,即使在application. yaml中配置了它。
我添加了以下依赖项:

implementation("org.springdoc:springdoc-openapi-ui:1.6.14")
implementation("org.springdoc:springdoc-openapi-kotlin:1.6.14")
implementation("org.springdoc:springdoc-openapi-security:1.6.14")

这是我的申请表

springdoc:
  api-docs:
    enabled: true
  swagger-ui:
    query-config-enabled: true
    oauth:
      client-id: <clientId>
      client-secret: <clientSecret>
      use-pkce-with-authorization-code-grant: true
    oauth2RedirectUrl: <redirectUrl>

这是我的配置类:

@Configuration
@OpenAPIDefinition
@SecurityScheme(
    name = "oauth2",
    type = SecuritySchemeType.OAUTH2,
    flows =
        OAuthFlows(
            authorizationCode =
                OAuthFlow(
                    authorizationUrl = "<authorizationUrl>",
                    tokenUrl = "<tokenUrl>",
                    scopes =
                        [
                            OAuthScope(name = "test1"),
                            OAuthScope(name = "test2"),
                            OAuthScope(name = "test3")],
                )))
open class OpenApiConfiguration {

  @Bean
  open fun customOpenAPI(): OpenAPI {
    return OpenAPI()
        .components(Components())
        .info(
            Info()
                .title("ABC Service Rest API")
                .description("description...")
                .version("1.0.0"))
  }
}

我错过了什么?
更新日期:(2023年2月17日)
当我在chrome中使用正确的redirect_uri之后,我就可以访问身份提供者的页面,所以我只需要找到一种方法来正确设置我的redirectUrl配置。

oxcyiej7

oxcyiej71#

将重定向URL添加到身份提供者的白名单解决了该问题。

相关问题