【发布时间】:2021-11-06 10:27:27
【问题描述】:
我有一个 SPA (Vue.js),它通过 REST 与 Quarkus 资源 API 进行通信。 我正在使用自己的 Keycloak 进行身份验证/授权。
在 Keycloak 中,我的领域中有两个客户端:
Client ID: frontend-client
Access Type: public
Standard Flow enabled
Client ID: backend-client
Access Type: bearer-only
Secret: mySecret
我的 Quarkus API 的 application.properties:
quarkus.oidc.auth-server-url=https://localhost:8082/auth/realms/myrealm
#quarkus.oidc.client-id=backend-service
#quarkus.oidc.credentials.secret=mySecret
我的 SPA 使用标准流程通过 Keycloak 进行身份验证,然后重定向到我的应用 ✅
然后我可以向我的 API 发出请求,并且一切正常尽管 quarkus.oidc.client-id 和 quarkus.oidc.credentials.secret 被注释掉了!这是为什么?当这些行没有被注释掉但具有 false 值时,它也可以工作。 ????
为什么 Quarkus 会忽略这些行,更重要的是,它为什么会起作用?
更新 添加依赖
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-keycloak-authorization</artifactId>
</dependency>
允许我将其添加到 application.properties:
quarkus.keycloak.policy-enforcer.enable=true
现在导致这个错误:
{"error":"invalid_client","error_description":"Bearer-only not allowed"}
但至少现在秘密没有被忽略,提供错误的秘密会导致正确的错误。
后续问题:为什么不允许不记名?
【问题讨论】:
-
你的 pom.xml 中有 quarkus-oidc 依赖吗?
-
是的,quarkus-oidc。我之前什至有过 quarkus-keycloak-authorization,但我不确定是否需要它,所以我删除了它。
标签: keycloak quarkus-oidc