我记录了使用keycloak登录的应用程序的登录流程。我看到在请求带有授权码的令牌时,Keycloak不使用状态参数:
.... POST /身份验证/领域/我的领域/协议/开放ID连接/令牌....
在Keycloak GUI中是否有一个设置,在那里我可以使用状态参数和授权码(如https://auth0.com/docs/secure/attack-protection/state-parameters中所述)来创建Keycloak?或者有其他方法来实现这一点吗?
我记录了使用keycloak登录的应用程序的登录流程。我看到在请求带有授权码的令牌时,Keycloak不使用状态参数:
.... POST /身份验证/领域/我的领域/协议/开放ID连接/令牌....
在Keycloak GUI中是否有一个设置,在那里我可以使用状态参数和授权码(如https://auth0.com/docs/secure/attack-protection/state-parameters中所述)来创建Keycloak?或者有其他方法来实现这一点吗?
2条答案
按热度按时间ffx8fchx1#
状态参数将仅在请求和响应之间的授权代码流中使用,而不会进一步使用。
也就是说,在第一个请求中,您可以生成一个随机值,并将其与state参数关联,如下所示。
http://localhost:8081?code=abc&state=RandonValue123
一旦用户登录成功,keycloak将用授权码和上面发送的state参数值响应您的重定向URL。
http://localhost:8081?code=abc&state=RandonValue123
个这将结束状态参数的使用,并且不会在下一个访问令牌或刷新令牌调用中使用。
一个简单的解释是,您的第一个auth调用和keycloak的响应之间存在某种关系,更详细的解释可以在这里找到-〉What is the purpose of the 'state' parameter in OAuth authorization request
lx0bsm1f2#
状态参数由初始化登录的一方创建,然后Keycloak在完成其凭据验证后应返回相同的状态参数。所有这些都是在交换access_token代码之前。