Keycloak:自定义身份提供程序中的 grant_type=password

Mat*_*gia 8 keycloak

我向我的领域添加了一个自定义 OIDC 身份提供程序,并且我想使用直接访问授权流(或grant_type=password),但这不起作用。

Keycloak可以吗?

尝试使用授权代码流时,一切正常,但 grant_type=password出现错误

   {
    "error":"invalid_grant",
    "error_description":"Invalid user credentials"
    }
Run Code Online (Sandbox Code Playgroud)

被退回。

我正在尝试获取访问令牌 e 刷新令牌执行以下请求:

$ curl -X POST 'http://localhost:8080/auth/realms/master/protocol/openid-connect/token'
    -H 'content-type: application/x-www-form-urlencoded' 
    -d 'grant_type=password' 
    -d 'client_id=test-client' 
    -d 'client_secret=834a546f-2114-4b50-9af6-697adc06707b' 
    -d 'username=user' // valid user in custom Identity Provider
    -d 'password=password' // password in custom Identity Provider
Run Code Online (Sandbox Code Playgroud)

这是身份提供者配置: 这是身份提供者配置

Sub*_*shi 8

请看下面的curl命令

curl -X POST -k -H 'Content-Type: application/x-www-form-urlencoded' -i 'https://135.250.138.93:8666/auth/realms/<Realm-Name>/protocol/openid-connect/token' --data 'username=<userName>&password=<Password>&client_id=<Client-ID>&grant_type=password&client_secret=7df18c0d-d4c7-47b1-b959-af972684dab0'
Run Code Online (Sandbox Code Playgroud)

在上面的命令中,您必须提供这些详细信息

  1. 领域名称- 您想要令牌的领域名称
  2. userName - 您应该有一个可以访问上述领域的用户
  3. 密码- 上述用户的密码
  4. Client-ID - 下的客户端名称(通常是字符串值)
  5. Client-Secret - 您可以找到上述客户端的客户端密钥 [领域 -> 客户端列表 -> 选择客户端 -> 凭据选项卡]


Has*_*ari 0

您需要使用 test-client 设置客户端,并且该用户应该在该领域中可用。虽然无法得到你想要实现的目标