KeyClope-通过OIDC端点检索JWT令牌
我目前正在尝试使用POST请求(而不是使用指定的适配器之一)从KeyClope令牌端点检索用户令牌。我已经建立了一个KeyClope领域,并添加了我自己的机器作为客户端。在文档中,令牌端点描述为:KeyClope-通过OIDC端点检索JWT令牌,jwt,keycloak,openid-connect,Jwt,Keycloak,Openid Connect,我目前正在尝试使用POST请求(而不是使用指定的适配器之一)从KeyClope令牌端点检索用户令牌。我已经建立了一个KeyClope领域,并添加了我自己的机器作为客户端。在文档中,令牌端点描述为: /realms/{realm-name}/protocol/openid-connect/token 就我在中所读的内容而言,我需要设置正文参数grant\u type=authorization\u code,以及参数code和redirect\u uri。我还需要设置授权头,我需要一个基本令牌
/realms/{realm-name}/protocol/openid-connect/token
就我在中所读的内容而言,我需要设置正文参数grant\u type=authorization\u code
,以及参数code
和redirect\u uri
。我还需要设置授权
头,我需要一个基本令牌
到目前为止,我将得到以下答复:
“错误”:“未经授权的客户端”,“错误描述”: “无效的\u凭据:无效的客户端凭据”
我从哪里获得基本
授权令牌?我希望我需要提供一个用户名和密码,因为JWT令牌是我试图接收的响应。如果我只想请求一个令牌,是否需要设置重定向\u url
?KeyClope提供了多种检索用户访问令牌的方法,遵循OpenId Connect规范。下面是根据OpenId Connect规范为授权码流(推荐用于web应用程序)执行此操作的步骤:
基本上,如果您不使用任何适配器,在检测到对某个受保护资源的请求时,您应该:
执行到keydeport登录页面的重定向(请记住keydeport使用领域实体,因此您也需要指定它):
您需要将状态值保留在客户端中,因为它需要在重定向过程中生存:
建议客户端使用此参数来维护状态
在请求和回调之间。通常,跨站点请求
伪造(CSRF、XSRF)缓解是通过加密绑定实现的
浏览器cookie中此参数的值
您不能与用户名/密码交互。密钥斗篷身份验证页不支持。登录成功后,将使用有效代码重定向到您的页面:
HTTP/1.1 302 Found
Location: https://client.example.org/cb?
code=SplxlOBeZQQYbYS6WxSbIA
&state=af0ifjsldkj
在这里,您需要检查状态是否为您最初发送的状态(您可能需要使用cookies通过web会话跟踪它),并使用该代码获取令牌。您可以使用以下代码向授权端点发送POST:
POST /auth/realms/demo/protocol/openid-connect/auth HTTP/1.1
Host: https://mykeycloakinstance.org
Content-Type: application/x-www-form-urlencoded
Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
grant_type=authorization_code&code=SplxlOBeZQQYbYS6WxSbIA
&redirect_uri=https%3A%2F%2Fclient.example.org%2Fcb
这是概括的流程,我自己还没有测试过代码,所以使用它作为一个例子,如果你考虑的话,毫不犹豫地修复它;-)p>
另请参见:
您是否实现了获得给定答案的工作?我目前正在使用一种使用客户端id和secret的解决方案(目前运行良好),但我尚未将您的解决方案与完整的身份验证流程相适应。一旦我检查并实施了你的解决方案,我会立即更新,当然,一旦我开始测试并开始工作,我也会接受你的答案(我已经投票了,因为它已经帮了我很多)。好的!!很高兴知道这有帮助;-)根据OIDC规范第3.1.3.1.节的规定,如果您的客户是保密的,您必须只指定授权标题。如果它是公共的,那么它就不是必需的。然而,keydape无法处理公共客户机,因为这根本不起作用(可能是OP问题的原因)。
POST /auth/realms/demo/protocol/openid-connect/auth HTTP/1.1
Host: https://mykeycloakinstance.org
Content-Type: application/x-www-form-urlencoded
Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
grant_type=authorization_code&code=SplxlOBeZQQYbYS6WxSbIA
&redirect_uri=https%3A%2F%2Fclient.example.org%2Fcb