Oauth 2.0 Key斗篷如何确定使用哪种签名算法?
我正在编写一个应用程序,该应用程序使用KeyClope作为其用户身份验证服务。我有普通用户,他们从前端(web浏览器)登录到KeyClope,还有服务用户,他们从后端(IIS上的PHP)登录。但是,当我从后端登录时,keydape使用HS256作为其访问令牌的签名算法,因此拒绝它进行进一步通信,因为在领域和客户端设置中设置了RS256。为了解决这个问题,我想“假装是前端”,为我的服务用户获取RS256签名访问令牌 出于安全原因,我无法将HS256密钥提供给应用程序服务器,因为它是对称的,而且有太多人可以访问服务器的代码 我目前正在前端和后端使用相同的用户/pw/client id/grant类型调试该问题,因此这不是问题所在 到目前为止,我已经尝试了这些,但没有成功:Oauth 2.0 Key斗篷如何确定使用哪种签名算法?,oauth-2.0,keycloak,access-token,digital-signature,Oauth 2.0,Keycloak,Access Token,Digital Signature,我正在编写一个应用程序,该应用程序使用KeyClope作为其用户身份验证服务。我有普通用户,他们从前端(web浏览器)登录到KeyClope,还有服务用户,他们从后端(IIS上的PHP)登录。但是,当我从后端登录时,keydape使用HS256作为其访问令牌的签名算法,因此拒绝它进行进一步通信,因为在领域和客户端设置中设置了RS256。为了解决这个问题,我想“假装是前端”,为我的服务用户获取RS256签名访问令牌 出于安全原因,我无法将HS256密钥提供给应用程序服务器,因为它是对称的,而且有太
- 复制用户代理
- 复制每个HTTP头(主机、接受、内容类型、用户代理、接受编码、连接,甚至内容长度与表单数据相同)
- 仔细检查KeyClope登录是否成功-是的,只是它使用了错误的签名算法
对于本例,我在主域中创建了一个特殊的服务用户,该用户具有查看用户角色,并获得如下数据:
在后一个列表中,步骤4失败,因为步骤3返回HS256签名访问令牌。在前一个列表中,步骤2正确返回RS256签名访问令牌。感谢您的澄清。如果可以的话,我会回答你的问题,也许会和预期的不同。当您关注令牌签名算法时,我认为您的OAuth2流在使用方面存在错误,或者您面临一些误解 后端和前端都使用“直接访问授权”,这是指OAuth2流
资源所有者凭据授权”
,这一事实要么是错误的声明,要么是架构中的错误
正如Key斗篷自己的文档所述(但在官方OAuth.2参考文献中也略有不同):
资源所有者密码凭据授予(直接访问授予)。。。由希望代表服务器获取令牌的REST客户端使用
用户。它是一个HTTP POST请求,包含
用户以及客户端的id和客户端的机密(如果是
机密客户)。用户的凭据在表单中发送
参数。HTTP响应包含标识、访问和刷新
代币
据我所知,您描述的应用程序和用例不需要这个流程
我的建议
相反,我在您的流(1)案例中看到的是授权代码流
- 假设“客户端”指的是浏览器中的普通用户(从前端应用程序重定向到KeyClope auth.)
- 假设您实际上不需要在客户端中使用id和访问令牌,除非您有合理的理由。因为允许的流被认为是遗留/不推荐的,不再推荐。在这种情况下,我们将谈论
(现在也不鼓励隐式流
流)密码授予
对于第二个流(后端->列表用户),我建议进行两个修改:
- 允许用户在前端应用程序中轮询用户列表,然后前端将要求后端返回该列表。对于具有
查看角色的客户端,拥有服务帐户的后端将能够获取所需数据:
Client (logged) --> Request list.users to FRONTEND app --> Get list.users from BACKEND app (<--> Keycloak Server) <----------------------------------------- Return data.
客户端(已记录)-->向前端应用程序请求list.users-->从后端应用程序获取list.users (密钥斗篷服务器)
谢谢你的澄清。如果可以的话,我会回答你的问题,也许会和预期的不同。当您关注令牌签名算法时,我认为您的OAuth2流在使用方面存在错误,或者您面临一些误解 事实上