SpringDoc Oauth2 需要隐式流随机数参数且身份验证失败

标签 springdoc

我能够启用授权按钮,但是当我单击授权按钮时,对于 oauth2 隐式流程,它会提示缺少随机数参数。

The 'nonce' parameter is required for authorize requests with either the 'id_token' or 'token' response types

这是我用来创建隐式流的代码

new OpenAPI()
    .addSecurityItem(new SecurityRequirement().addList(securitySchemeName))
    .components(new Components()
        .addSecuritySchemes(securitySchemeName,
            new SecurityScheme()
                .name(securitySchemeName)
                .type(SecurityScheme.Type.OAUTH2)
                .description("This API uses OAuth 2 with the implicit grant flow.")
                .flows(new OAuthFlows()
                          .implicit(new OAuthFlow()
                              .authorizationUrl(authorizeUri)
                              .scopes(new Scopes()
                                .addString("read", "read")))

在 Springfox 中,要添加 nonce 参数,您需要为 SecurityConfiguration 创建一个 bean,并使用 extraQueryStringsParams() 方法。

SecurityConfiguration#additionalQueryStringParams()

您可以在其中添加随机数作为键,并在值对中添加随机字符串。我尝试使用 OAuthFlows 和 SecurityScheme 上的扩展,但它似乎仍然不起作用。

我不确定我缺少什么,非常感谢任何帮助。

最佳答案

好吧,我明白了,没有添加额外查询参数的功能。您只需自己将其硬编码到字符串中,然后将其添加到 url 中。

.authorizaitonUrl(authroizeUri + "?nonce=\"asdf\"")

关于SpringDoc Oauth2 需要隐式流随机数参数且身份验证失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61652540/

相关文章:

spring-boot - Spring Boot 3 和 OpenApi 3 (1.6.13) 不起作用。白标错误页面

openapi - 如何公开其他模型: Migrating from Springfox to Springdoc

spring-boot - springdoc-openapi 中的隐藏参数不起作用

springdoc - 我已经使用 springdoc 安装了 OpenAPI 3,但 URL 很奇怪。我可以将其更改为预期值吗?

使用 Spring 自定义解析器注释的 Swagger OpenApi 动态查询参数名称

java - 在springdoc-openapi-ui中为基本身份验证启用授权按钮

swagger - springdoc-openapi 规范生成与泛型继承

java - springdoc-openapi 如何在不更改 toString 的情况下使用 @JsonValue 枚举格式?

java - 如何使用springdoc-openapi将Open API 3与Spring项目(而非Spring Boot)集成

java - Spring Boot 3.0.0 与 Springdoc 不兼容?