为什么忽略Quarkus.oidc.redentials.ret? [英] Why is quarkus.oidc.credentials.secret being ignored?

查看:32
本文介绍了为什么忽略Quarkus.oidc.redentials.ret?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个SPA(Vue.js),它通过REST与Quarkus资源API通信。 我正在使用自己的密钥罩进行身份验证/授权

在Keyloak中,我的领域中有两个客户端:

Client ID: frontend-client
Access Type: public
Standard Flow enabled

Client ID: backend-client
Access Type: bearer-only
Secret: mySecret

我的Quarkus API的My Applation.Properties:

quarkus.oidc.auth-server-url=https://localhost:8082/auth/realms/myrealm
#quarkus.oidc.client-id=backend-service
#quarkus.oidc.credentials.secret=mySecret

我的SPA使用标准流向密钥罩进行身份验证,然后重定向到我的应用程序✅

然后我可以向我的API发出请求,一切正常,尽管Quarkus.oidc.client-id和Quarkus.oidc.redentials.ret已被注释掉!为什么会这样呢?当这些行未被注释掉但具有False值时,它也有效。😳

为什么Quarkus忽略这些行,更重要的是,它为什么有效?

更新 添加依赖项

<dependency>
    <groupId>io.quarkus</groupId>
    <artifactId>quarkus-keycloak-authorization</artifactId>
</dependency>

允许我将其添加到应用程序。属性:

quarkus.keycloak.policy-enforcer.enable=true

现在会导致此错误:

{"error":"invalid_client","error_description":"Bearer-only not allowed"}

但至少现在密码没有被忽略,提供错误的密码会导致正确的错误。

跟进问题:为什么不允许只允许不记名?

推荐答案

我猜,因为您的Quarkus应用程序使用仅承载客户端,所以它将只使用签名检查承载令牌的真实性。

因为它不会调用Keyshaak进行任何其他验证,所以它不会在您的属性中使用客户端ID和客户端密码。

如果希望Quarkus使用该客户端,则需要将该客户端的类型更改为机密。

顺便说一句,在Quarkus QuickStart中保护服务应用:Keyloak客户端使用机密客户端,仅承载设置为FALSE:https://github.com/quarkusio/quarkus-quickstarts/blob/main/security-openid-connect-quickstart/config/quarkus-realm.json#L395

这篇关于为什么忽略Quarkus.oidc.redentials.ret?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆