Tho*_*mas 3 node.js adal openid-connect azure-ad-b2c passport-azure-ad
我无法弄清楚它的目的customState以及是否/如何利用它来将数据传递到返回网址。具体来说,我希望在登录后将用户路由回其原始位置。我想我可以将原始 url 传递给参数customState,并在 return url 中将其返回给我POST,但它似乎已被编码或可能被替换为不同的值。
这是我想要实现的目标:
/page/protected需要身份验证。passport.authenticate进而重定向用户进行登录。/auth/oidc/return。/page/protected。返回 URL(例如“/page/protected”)可以通过以下方式进行往返:
1) 在身份验证中间件重定向到 Azure AD B2C 之前设置“customState”参数:
app.get('/login', function (req, res, next) {
passport.authenticate('azuread-openidconnect', {
response: res,
resourceURL: config.resourceURL,
customState: '/page/protected', // Or set to the current URL
failureRedirect: '/'
})(req, res, next);
}, function (req, res) {
res.redirect('/');
});
Run Code Online (Sandbox Code Playgroud)
2)req.body.state身份验证中间件验证来自 Azure AD B2C 的身份验证响应后获取参数:
app.post('/auth/openid/return', function (req, res, next) {
passport.authenticate('azuread-openidconnect', {
response: res,
failureRedirect: '/'
})(req, res, next);
}, function (req, res) {
res.redirect(req.body.state);
});
Run Code Online (Sandbox Code Playgroud)
“customState”参数值应该加密,这意味着req.body.state如果您不希望返回 URL 被篡改,则必须解密该参数。
否则,通常会在req.session身份验证中间件重定向并将身份验证请求发送到 Azure AD B2C 之前写入返回 URL,然后在req.session身份验证中间件接收并验证来自 Azure 的身份验证响应后读取(然后删除)此返回 URL广告 B2C。
| 归档时间: |
|
| 查看次数: |
1653 次 |
| 最近记录: |