我对此并不陌生,在阅读了很多书之后,我感到我不太了解如何在Keycloak中实现授权代码流。 我的疑问:
创建支持此流程的客户端之后,如何执行凭据验证?默认情况下,如果我不进行任何配置,则会收到一个登录表单。如果我在浏览器中打开此html并填写用户和密码字段,则当我按下按钮时,它会将我发送到类型为“ ... / realms / {REAL_NAME} / login-actions / authenticate?session_code = ....“,但我不知道这是否应该工作(似乎不行),或者是否需要其他操作,例如添加身份提供程序。
如果有必要添加提供商,如何添加非外部提供商(例如Google,Facebook等)?我已经看到了Keycloak OpenID Provider选项,但我不太了解应在“授权”端点,令牌端点,“客户端”等字段中输入什么。我应该使用现有的客户端还是生成新的客户端?
很抱歉,问题似乎很明显,但是如果不使用外部IDP,我将无法确定圆环并实现整个流程。 预先感谢!
答案 0 :(得分:1)
答案 1 :(得分:0)
非常感谢您的回答。
我的解释可能不够精确,我将提供更多详细信息。我将客户端配置为openid-connect并启用了标准流程。 当我发出第一个请求时,例如:
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&execution=b47d36ec-2b7d-4ec3-aaf7-cf68ca5d2380&client_id=backend&tab_id=9UEVmEJPLio
因此,我知道可以通过发送POST请求来继续执行此过程,但是我不能(我收到400且HTML错误)。我的疑问是是否可以在不配置任何身份提供程序的情况下完成此默认身份验证?我了解是的,但是如何?
如果我尝试使用其他流程作为凭据,那么我会获得一个access_token,没有问题,但是使用授权码流程,我将无法通过登录表单。
编辑:当我写一个问题时,我可以看到编辑器中的所有行,但是当它发布时,第一行消失了(我打招呼的地方),这就是为什么我看起来很粗鲁,道歉!