当前位置: 首页 > 知识库问答 >
问题:

密钥斗篷:自定义身份提供程序中的 grant_type=密码

梁丘俊人
2023-03-14

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

钥匙斗篷有可能吗?

当尝试使用授权代码流程时,一切正常,但使用grant_type=密码时出错

   {
    "error":"invalid_grant",
    "error_description":"Invalid user credentials"
    }

被退回。

我正在尝试获取访问令牌 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

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

共有3个答案

常翰
2023-03-14

在DirectGrant身份验证流程之前,密钥斗篷进行以下验证。

  • 用户名
  • 密码
  • otp(如果配置)
  • 如果用户已启用
  • 如果用户由于蛮力方向而被锁定(仅在启用时)

您可以在身份验证中自定义此功能-

融渊
2023-03-14

我也遇到了这个问题。一开始我也怀疑它看起来像一个错误。然而,转折点是我尝试了主领域和 client_id=admin-cli 与我的管理员用户。我可以使用 grand_type=password 检索令牌。它只是失败了我自己的领域,client_id就像这里报告的那样。我发现我的问题是我使用的用户在我尝试登录我的领域控制台后没有被激活(例如:http://localhost:18080/auth/realms/quarkus-workshop-labs/account/)。我需要重置密码,以便最终激活密码。然后密码grant_type开始工作。

(注意,默认情况下,新创建的用户需要重置密码才能使用。)

田阳泽
2023-03-14

请看下面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'

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

  1. Realm-Name-您想要令牌所对应的领域名称
  2. userName-您应该有一个可以访问上述领域的用户
  3. 密码-上述用户的密码
  4. Client-ID-
  5. 下的客户端名称(通常是字符串值)
  6. Client-秘密-您可以找到的上述客户端的客户端秘密[Realm-
 类似资料:
  • 我试图从Angular应用程序获取用户凭据(查看OPT配置)。我试图调用2个API网址之一: “是的https://BASE_URL/auth/realms/REALM_NAME/account/credentials“是的 或者 第二个列在REST API留档中。 我正在尝试包括令牌。 这两个都给了我cors错误。 我尝试在主客户机中,也在帐户和帐户控制台客户机中将web源设置为“*”或“”。

  • 我试图实现一个自定义密钥克拉克身份验证器SPI,用于对外部身份提供程序进行身份验证。用户已经存在于keycloak存储中,我只需要连接到自定义SPI来验证他们。 我正在遵循官方指南https://www.keycloak.org/docs/latest/server_development/index.html#_auth_spi_walkthrough的第8.3节,这与我所需要的非常相似。

  • 我需要在自定义密钥斗篷SPI身份验证器中处理用户的取消。我实现了它,它工作得很好。我所需要的是取消登录流程,并从用户点击取消时的乞讨开始 在我的例子中,我得到了登录页面,但URL错误: http://localhost:8080/auth/realms/realm1/login-actions/authenticate?execution=bb1fb7c3-0b59-4a07-b997-b619c

  • 嗨,好几天了,我都被困在这上面了!在使用本指南转换我的react应用程序后,我尝试使用KeyClope对我的electron应用程序进行身份验证。 当我运行'npm运行电子:dev'时,keyCloak会重定向到登录页面。然而,当我运行'npm运行电子:prod'这失败。 来自KeyClope服务器的日志显示: 请注意,重定向_uri是'file:///...“我相信这就是原因。 我也试图改变下面

  • 我试图使用Keycloak的openId-connectendpoint来获取关于用户角色的信息。我使用/auth/realms/moje/protocol/OpenID-connect/userinfoendpoint来获取关于已验证用户的信息。我可以获得姓名、用户名、电子邮件等信息。但是我不能强迫Keyclak给我关于用户角色的信息。 我已经阅读了openID文档,我没有找到任何关于必须获取角

  • 我想设置一个Docker网络,其中包含keyCloak、postgres和webapp实例。 有没有一种方法可以在容器之间进行网络通信,同时也理解oidc客户端重定向?我有一个问题,容器可以互相交谈只是罚款,如果我设置OIDC容器名称为docker网络,但然后我遇到的问题与客户端,不能连接到这些相同的URL以外的docker网络在主机上机器。 有人能给我指出正确的docker留档来寻找DNS或主机