我正在尝试使用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配置。
1条答案
按热度按时间oxcyiej71#
将重定向URL添加到身份提供者的白名单解决了该问题。