即使在添加了领域管理角色之后,当访问Keycloft用户列表时,我也会得到状态代码401



Am正在运行密钥斗篷10.0.2版本。我已经为创建领域设置了一个新的领域截图

我还创建了一个名为演示应用程序的客户端创建的屏幕截图

我去了一个头,创建了用户。在角色映射选项卡上,我分配了两个领域管理角色,一个是视图领域,另一个是用于领域管理的视图用户屏幕截图

在这些配置之后,我尝试了这个curl请求来获得访问密钥

curl --location --request POST 'http://localhost:8080/auth/realms/test realm/protocol/openid-connect/token' 
--header 'Content-Type: application/x-www-form-urlencoded' 
--data-urlencode 'client_id=demo-app' 
--data-urlencode 'username=benmuuo' 
--data-urlencode 'password=1234' 
--data-urlencode 'grant_type=password'

在获得访问令牌后,我请求

curl --location --request GET 'http://127.0.0.1:8080/auth/admin/realms/test realm/users' 
--header 'Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJROWZUcUtwWm9vZWRCSFZObmNZb19EUGRyc09BejhlMzMzZjhOMjJCRVBvIn0.eyJleHAiOjE1OTc0MTgxNzMsImlhdCI6MTU5NzQxNzg3MywianRpIjoiMjhjOGFiMzItODUyNi00OWJjLWEzZjQtNTU5OTFlNjNjZTlhIiwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo4MDgwL2F1dGgvcmVhbG1zL3Rlc3QlMjByZWFsbSIsImF1ZCI6WyJyZWFsbS1tYW5hZ2VtZW50IiwiYWNjb3VudCJdLCJzdWIiOiI2NmQ3MDY3Ny05Mjk2LTQ2NTUtYTY0Zi1kYmI0YTZkY2I5M2QiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiJkZW1vLWFwcCIsInNlc3Npb25fc3RhdGUiOiI5YWQ4YTZjMS1hNDRiLTRmNTMtOTRhYy0xNzc4MGQ5ZDE1NjYiLCJhY3IiOiIxIiwiYWxsb3dlZC1vcmlnaW5zIjpbImh0dHA6Ly9sb2NhbGhvc3Q6ODA4MCJdLCJyZWFsbV9hY2Nlc3MiOnsicm9sZXMiOlsib2ZmbGluZV9hY2Nlc3MiLCJhZG1pbiIsInVtYV9hdXRob3JpemF0aW9uIl19LCJyZXNvdXJjZV9hY2Nlc3MiOnsicmVhbG0tbWFuYWdlbWVudCI6eyJyb2xlcyI6WyJ2aWV3LXJlYWxtIiwidmlldy11c2VycyIsInF1ZXJ5LWdyb3VwcyIsInF1ZXJ5LXVzZXJzIl19LCJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJlbWFpbF92ZXJpZmllZCI6ZmFsc2UsInByZWZlcnJlZF91c2VybmFtZSI6ImJlbm11dW8ifQ.drQwz61b1f6B7E2e5g5k0poDPucEav4yd5FIN7kPjbl2Kgo8w96i9M98htcBkFkk6_EcWGx7U5H4TgAng4x_VVrCC8KgtIM_Jbmz0h_7bx_4LCkCcxmka-zuxBm4BKjF42XHOApKmL26dAnRbFgckp3SZ8v14Xz77Va0tPcH4R_Ap0VgkD0X3kj5rbInsvtrBDgQyinFSPZxe9fzW9ZybkQ4UmN_Plj6zbDwOmPbA1vOEuhPRmddgM5TfDr46bmeiuw6jrqD-1IA6glkt4H2P9ebjFWVHePLw9eyE8F0onRqOVajQgN60d2hNSSi-FsHHr-DoQG5mEQx797yrr4TVQ'

这是我收到401错误的时间

{
"error": "HTTP 401 Unauthorized"
}

是什么导致了这个问题,因为我不明白。

不幸的是,Keycaptain在名称包含非URL友好字符(如空格(的领域中存在问题。你可以看到https://issues.redhat.com/browse/KEYCLOAK-7844和https://github.com/keycloak/keycloak/pull/5375#issuecomment-405343026了解更多详细信息。

唯一可行的解决方案(目前,即Key斗篷11.0.2-(是禁止创建此类领域,例如通过更改主题来验证输入字段中的领域名称。

尝试将领域名称更改为test-realm,然后可以使用Test Realm作为领域显示名称。

首先,您应该使用管理员(主(配置文件来完成此请求

curl --location --request POST 
'http://localhost:8080/auth/realms/master/protocol/openid-connect/token' 
--header 'Content-Type: application/x-www-form-urlencoded' 
--data-urlencode 'client_id=admin-cli' 
--data-urlencode 'username=admin' 
--data-urlencode 'password=admin' 
--data-urlencode 'grant_type=password'

获取访问令牌后,尝试此请求

curl --location --request GET 
'http://localhost:8080/auth/admin/realms/test realm/users' 
--header 'Authorization: Bearer your-access-token