我有一个SPA (Vue.js),它通过REST 与 Quarkus Resource 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 进行身份验证,然后重定向到我的应用 ✅</p>
然后我可以向我的 API 发出请求,尽管 quarkus.oidc.client-id 和 quarkus.oidc.credentials.secret 被注释掉,但一切正常!这是为什么?当这些行没有被注释掉但具有错误值时,它也可以工作。
为什么 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"}
但至少现在秘密没有被忽视,提供错误的秘密会导致正确的错误。
追问:为什么不允许bearer-only?