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

密钥斗篷中的授权代码授予流

程招
2023-03-14

我是这方面的新手,读了很多之后,我觉得我不太明白如何在Keycloak中实现授权代码流。我的疑惑:

> < li>

在创建了支持此流程的客户端后,如何执行凭据验证?默认情况下,如果我不做任何配置,我会得到一个登录表单。如果我在浏览器中打开这个html,并填写用户和密码字段,当我按下按钮时,它会将我发送到一个类型为.../realm/{ REAL _ NAME }/log in-actions/authenticate?session_code= ... "但我不明白这是否应该工作(似乎没有),或者是否需要其他东西,如添加身份提供者。

如果有必要添加一个提供商,您如何添加一个非外部的提供商,如Google、Facebook等?我已经看到了Keyclock OpenID Provider选项,但我不太清楚应该在授权endpoint、令牌endpoint、客户端等字段中放置什么。我应该使用现有客户端还是生成新客户端?

如果问题看起来很明显,我很抱歉,但是如果不使用外部IDP,我无法解决问题并实现整个流程。提前感谢!

共有2个答案

聂风史
2023-03-14

非常感谢您的回答。

我的解释可能不是很准确,我会提供更多细节。我有一个客户端配置为 openid 连接并启用了标准流程。例如,当我提出第一个请求时:

curl -v -d "scope=openid&client_id=backend&response_type=code&redirect_uri=https://www.example.com/callback" -H "Content-Type: application/x-www-form-urlencoded" -X POST localhost:8180/auth/realms/myrealm/protocol/openid-connect/auth

我收到一个带有登录表单的HTML。我的问题从这里开始(可能是因为我没有在为此设计的流程中使用浏览器)。如果我将这个html存储在一个文件中,我在浏览器中打开它并尝试输入用户名和密码,我收到一个错误。如果我打开HTML代码,我可以看到以下操作:

http://localhost:8180/auth/realms/myrealm/login-actions/authenticate?session_code=r8p94ca0Umrc-S9BMPC_U168Vmc9y_KESCEI_dHk52I&amp;execution=b47d36ec-2b7d-4ec3-aaf7-cf68ca5d2380&amp;client_id=backend&amp;tab_id=9UEVmEJPLio

所以我明白我可以通过发送 POST 请求来继续该过程,但我不能(我得到一个带有错误 HTML 的 400)。我的疑问是,是否应该能够在不配置任何身份提供程序的情况下完成此默认身份验证?我明白是的,但是如何?

如果我尝试另一个流作为凭据,我会毫无问题地获得access_token,但使用授权代码流,我无法通过登录表单。

编辑:当我写一个问题时,我可以看到编辑器中的所有行,但是当它发布时,第一行消失了(我打招呼的地方),这就是为什么我看起来如此粗鲁,我很抱歉!

桓嘉谊
2023-03-14
  1. 您的客户端(应用程序)需要支持oauth(或saml)。在keyclock中创建一个客户端。您使用keyclok设置(url、id、key?)配置应用程序。您的客户端将用户发送到keyclock。用户登录到keyclok,并将被发送回您的应用程序。可以实现自己的登录表单,并通过api将数据发送到keyclock。我会采用第一种方法。(https://www.keycloak.org/docs/latest/server_admin/#_clients)
  2. 您想在没有外部提供程序的情况下试用keyclock,但想使用外部提供程序?我创建了两个领域。在realm1中,我添加了一个客户端(saml或oauth,无论您喜欢什么)。在realm2中,我添加了一个Identity Provider,这是我在realm1客户端中设置的东西。现在我可以使用realm1中的用户登录realm2。如果您想使用外部身份提供者(如FB或公司拥有的身份提供者),只需执行第二步,然后添加身份提供者。(https://www.keycloak.org/docs/latest/server_admin/#_identity_broker)
 类似资料:
  • 我正在尝试编写一个定制的KeyClope验证器,该验证器可以从某个请求中检索用户凭据,并动态提交这些凭据进行身份验证,而最终用户不必手动将它们输入某个登录表单。 以这个问题为起点,我在KeyCloak中创建了自己的自定义身份验证SPI。我还根据需要配置了KeyCloak身份验证流。 自定义验证器 自定义验证器工厂 下面是我的自定义登录表单,它基于这里的KeyClope“secret questio

  • 本文向大家介绍oauth 授权码授予,包括了oauth 授权码授予的使用技巧和注意事项,需要的朋友参考一下 示例 第1步 第2步 资源

  • 我们必须在我的客户项目中集成OAuth2.0授权代码授予。目前,该应用程序使用本地登录页面。我们需要删除该页面,并将未登录的用户重定向到AS登录页面,。在AS end成功登录后,我们将被重定向到配置的。此时,我的客户端应用程序将如何知道用户已在AS登录?如何在客户端维护会话?另外,我需要用和访问令牌交换auth代码,并将其用于后续的服务器API调用。那么如何实现这一点并将令牌作为标头发送呢? 应用

  • 我试图复制cognito hosted ui sign in页面(https://docs.aws.amazon.com/cognito/latest/developerguide/login-endpoint.html)的功能,但是aws sdk没有提供任何获取用户名、密码并返回授权代码的方法,这些代码可用于获取Access/ID令牌。initiateAuth和adminInitiateAuth

  • 对于授权码授予,密钥是否应该映射到每个单独的用户? 发送电子邮件时,发件人的电子邮件是什么? 谢谢 J Larry的其他信息: 这太棒了!。Docusign对库存流进行了积极监控!我正在使用JWT 我配置了一个用户。我假设电子邮件正文将类似于下面的一个。 我的问题是,如果使用密钥来识别应用程序,客户知道电子邮件是从应用程序发送的,但他如何知道使用应用程序的哪个员工发送电子邮件? 请参阅以下电子邮件

  • 产品-服务:具有受保护路由的简单下游服务 jwt-resoure-server:当包含在下游服务中时,使其成为提取jwt令牌并将其设置在安全contex中的资源服务器的jar。 尤里卡-服务:发现服务 zuul-server:边缘服务器 Okta是我的auth服务器 我已经将oauth grant类型设置为be-Authorization code(我知道对于spa来说,建议使用隐式grant类型