我想对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,中的“授权”按钮,而不是被重定向到我的密钥披风登录页面时,我得到了一个弹出窗口,其中包含了所有不同的可用授权:
我不能使用这些,因为我的密钥披风是,不允许直接授予。
如何通过重定向实现登录?这有可能吗?
额外的问题:为什么swagger属性在IntelliJ中显示为未使用?
发布于 2021-09-22 19:21:23
好吧,我找到了一种让它工作的方法,,尽管它有隐式流,还有一个专用的第二个(公共)客户端。
夸夸斯application.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
需要为oauth2-redirect.html的重定向URL
现在我只需要输入client_id:
然后我被重定向到Keycloak,然后返回Swagger。希望这能帮助任何希望达到同样目标的人
https://stackoverflow.com/questions/69285386
复制相似问题