oauth2.0 Keycloak返回未经授权的401

zkure5ic  于 2023-10-15  发布在  其他
关注(0)|答案(1)|浏览(198)

我在本地搜索比特纳米的钥匙斗篷图像。我想做的是使用Keycloak REST API。但不管我怎么努力我还是得了401分
我已经做了文件上写的。这是客户端的屏幕截图access typeconfidential,服务帐户是enabled。这是我创建的testapi客户端;

在这里,您可以看到服务帐户角色;

查看和管理用户,我分配了manage-usersview-user角色。
首先,为了得到access_token,我使用了client_idclient_credential。从这里可以看到,

我在获取访问令牌方面没有问题。
但是当我试图获取用户列表或创建一个新用户时,我总是得到401。在这里,您可以看到我使用了从http://localhost:8092/auth/realms/test/protocol/openid-connect/token获得的SSL access_token

这说不通啊我开始考虑砸电脑。
任何帮助都将不胜感激

sg24os4d

sg24os4d1#

对于任何人有完全相同的问题,并最终在此页面,这里是解决方案:
1.保持你所有的keycloak设置为默认值,无论你使用的是bitnami/keycloak,还是keycloak/keycloak,在管理控制台中绝对没有什么需要改变的。
1.使用GET方法调用此端点:

curl -X GET http://keycloak:8080/realms/master/.well-known/openid-configuration

确保颁发者终结点正确。
1.通过命令请求令牌:

access_token=`curl -H "Content-Type: application/x-www-form-urlencoded" -d "client_id=admin-cli" -d "username=user" -d "password=bitnami" -d "grant_type=password" -d "scope=openid" "http://keycloak:8080/realms/master/protocol/openid-connect/token" | jq -r .access_token`

确保您没有忘记scope=openid
1.通过在60 seconds中调用userinfo来验证此令牌

curl -H "Authorization: bearer ${access_token}" -H "Content-Type: application/x-www-form-urlencoded" -d "scope=openid" "http://keycloak:8080/realms/master/protocol/openid-connect/userinfo"

确保你没有忘记scope=openid太。

相关问题