gpt4 book ai didi

openid-connect - 没有 cookie 的 Openid 连接状态参数

转载 作者:行者123 更新时间:2023-12-04 06:39:39 25 4
gpt4 key购买 nike

规范建议使用 state参数来帮助减轻 CSRF-lie 攻击向量。但是,如果使用基于 token 的身份验证而不是基于 session 的身份验证来实现消费者用户的身份验证工作流,那么考虑到无法在 session 上设置状态,建议管理状态。

最佳答案

我意识到您的问题是在没有 cookie 的情况下专门提出的,但是由于您声明您的目标是避免后端 session ,因此您可以向浏览器发出一个包含状态的短期签名 cookie。通过签署它,您就知道它是您发布的,并且没有被篡改。将其设为 HttpOnly 和 Secure 以获得良好的衡量标准。

我目前正在尝试使用 Express.js 进行以下操作:

const cookieParser = require('cookie-parser');
...
app.use(cookieParser('your-secret'));

在生成到授权服务器的重定向的后端代码中,我将状态存储在签名的 cookie 中,并将其包含在到授权服务器的重定向 url 中:
    const state = uuidv4();
res.cookie(
'state',
state,
{
maxAge: 60 * 1000,
httpOnly: true,
secure: true,
signed: true // important
}
);

然后在您的回调处理程序中,验证 cookie 状态( req.signedCookies.state)与查询字符串参数状态( req.query.state)匹配,然后可选择删除 cookie 或让它自行过期。

即使 spec说这种方法(“将此参数的值与浏览器 cookie 加密绑定(bind)”)是“典型的”,我很难找到这样做的人。我确实找到了 mod_auth_openidc听起来它正在这样做,但我没有深入研究它的来源:

a short-lived "state" cookie that correlates the authentication request and response



你问已经一年了,如果你找到另一种解决方法,我很想听听。

关于openid-connect - 没有 cookie 的 Openid 连接状态参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43184860/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com