【问题标题】:Quarkus + Swagger UI + KeycloakQuarkus + Swagger UI + Keycloak
【发布时间】:2021-11-15 23:44:36
【问题描述】:

我想对 Quarkus 生成的 Swagger UI 使用我的 Keycloak 身份验证。 这是我在 application.properties 中的配置:

quarkus.swagger-ui.oauth2-redirect-url=http://localhost:8080/q/swagger-ui/oauth2-redirect.html
quarkus.smallrye-openapi.security-scheme=oidc
quarkus.smallrye-openapi.security-scheme-name=Keycloak
quarkus.smallrye-openapi.oidc-open-id-connect-url=http://localhost:8888/auth/realms/myrealm/.well-known/openid-configuration
quarkus.swagger-ui.oauth2-redirect-url=http://localhost:8080/q/swagger-ui

我的 REST 控制器是这样注释的:

@Path("/my-path")
@Authenticated
@SecurityRequirement(name = "Keycloak")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public class MyController {

    @GET
    public List<MyObject> listAll() {
       // [...]
    }
}

现在,当我单击 Swagger 中的“授权”按钮时,不会被重定向到我的 Keycloak 登录页面,而是会弹出一个包含所有不同可用授权的弹出窗口:

我无法使用其中任何一个,因为我的 Keycloak不允许直接授予

如何实现重定向登录?这甚至可能吗?

额外问题:为什么在 IntelliJ 中 swagger 属性显示为未使用?

【问题讨论】:

    标签: swagger openid-connect quarkus


    【解决方案1】:

    好吧,我找到了一种让它工作的方法,虽然在 Keycloak 中有隐式流程和专用的第二个(公共)客户端

    Quarkus 应用程序.properties:

    # Swagger
    quarkus.smallrye-openapi.security-scheme=oauth2-implicit
    quarkus.smallrye-openapi.security-scheme-name=Keycloak
    quarkus.smallrye-openapi.oauth2-implicit-authorization-url=http://localhost:8888/auth/realms/my-realm/protocol/openid-connect/auth
    quarkus.swagger-ui.oauth2-redirect-url=http://localhost:8080/q/swagger-ui/oauth2-redirect.html
    

    重定向 URL 需要为 oauth2-redirect.html

    现在我只需要输入client_id:

    然后我被重定向到 Keycloak,然后返回 Swagger-UI。 希望这可以帮助任何希望实现相同目标的人??

    【讨论】:

      猜你喜欢
      • 2021-11-12
      • 2022-01-20
      • 2021-10-20
      • 1970-01-01
      • 2021-07-20
      • 2020-08-14
      • 2021-11-24
      • 2017-06-14
      • 2022-01-18
      相关资源
      最近更新 更多