根据 OpenAPI 定义在 Swagger UI 中使用 PKCE 进行授权代码流

问题描述 投票:0回答:1

我正在为单页应用程序 (SPA) 构建一个 Web API,其中用户使用带有 PKCE 的授权代码流通过第三方授权服务器进行身份验证。此 API 使用生成的 OpenAPI 定义和 Swagger UI 界面进行记录。

使用 API Platform 3.1(构建 Web API 的框架),我能够从 Swagger UI 配置授权按钮,使其完全按照我想要的方式运行,而无需任何 Swagger UI 自定义:

请注意,API 平台显然“集成了 Swagger UI 的定制版本”,因此 PKCE 支持可能特定于其 Swagger UI 版本。

但是,我无法使用其他使用普通 Swagger UI 的工具来使用带有 PKCE 的授权代码流(但我可以将其配置为使用不带 PKCE 扩展的正常授权代码流)。

使用 PKCE 的授权代码流在(普通)Swagger UI 中可用吗?这个授权方法可以使用OpenAPI 3.0记录吗?

oauth-2.0 swagger swagger-ui openapi api-platform.com
1个回答
0
投票

是的,vanilla SwaggerUI 支持 PKCE!

我使用以下命令在 docker 中使用 PKCE 运行 SwaggerUI:

docker run --rm -p 80:8080 \
-v ~/Desktop/SWAGGER_UI:/foo \
-e SWAGGER_JSON=/foo/my-service-openapi.yml \
-e OAUTH_CLIENT_ID=my-service-client-id \
-e OAUTH_SCOPES="openid offline" \
-e OAUTH_USE_PKCE=true \
swaggerapi/swagger-ui

(将您的 OpenAPI 规范放入“~/Desktop/SWAGGER_UI/my-service-openapi.yml”)

您可以在此处

查看设置

在 OpenAPI 规范中,您可以按照此处的描述来定义它! 您必须更改为“authorizationCode”:

components:
  securitySchemes:
    oAuthSample:
      type: oauth2
      description: This API uses OAuth 2
      flows:
        authorizationCode:
          authorizationUrl: https://your-host.com/oauth2/auth
          tokenUrl: https://your-host.com/oauth2/token
          refreshUrl: https://your-host.com/oauth2/token
          scopes:
            openid: openid scope
            offline: offline scope
© www.soinside.com 2019 - 2024. All rights reserved.