express - 使用 OpenID 的 cookie 流的 passport-azure-ad 挂起并返回具有“未定义”值的令牌
问题描述
当前配置:
identityMetadata:
"https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration",
clientID: secretsService.get("microsoft", "clientid"),
loggingLevel: "error",
allowMultiAudiencesInToken: true,
validateIssuer: false,
tenantIdOrName: secretsService.get("microsoft", "tenantid"),
passReqToCallback: true,
clientSecret: secretsService.get("microsoft", "secret"),
responseType: "code",
responseMode: "query",
redirectUrl: "https://localhost:3000/auth/microsoft/redirect",
session: false,
useCookieInsteadOfSession: true,
cookieEncryptionKeys: [
{
key: secretsService.get("app", "encryptionkey"),
iv: secretsService.get("app", "iv"),
},
],
我制作的用于测试的临时密钥:
"app": {
"encryptionkey": "214125442A472D4B6150645267556B58",
"iv": "kXp2s52534v8"
}
和我的 cookie-parser 中间件:
cookieParser()).forRoutes("*")
我也尝试将密钥作为秘密传递给 cookie 解析器,但我很确定这不是预期的用途。
登录后重定向永远不会发生,但在节点控制台上我可以看到令牌的默认值,例如:
oid: undefined,
upn: undefined,
displayName: undefined,
name: {
familyName: undefined,
givenName: undefined,
middleName: undefined
},
现在我觉得我显然遗漏了一些关于你应该如何配置这些 cookie 加密密钥并生成它们的东西,或者它只是有点倒退。
- 我是否必须使用与 cookie-parser 中间件使用的密码相同的密码自己生成密钥并在那里提供?
- 我看到 passport-azure-ad 正在使用特定的 AES 算法,它需要 32 位密钥和 12 位 iv,我是否还需要以某种方式使用 cookie-parser 强制执行此操作以使其匹配?
- iv 怎么样,不需要经常更换吗?我现在是否必须管理整个基础架构才能让它为 cookie 流工作?
解决方案
推荐阅读
- discord.js - 事件通道创建 .setauthor
- javascript - 一种样式不起作用,但另一种样式起作用
- python - 我如何计算最喜欢的类别 - Django Query
- javascript - 如何确定哪个对象发出了事件,并在 node.js 中获取引用?
- react-native - Axios 没有从 android 中的服务器获取数据
- c++ - C ++多线程:静态变量初始化中的竞争条件
- mbr - 主引导记录最大驱动器大小
- java - Android键盘在Dialog中弹出textview如何修复它
- java - 无法运行程序“/data/user/0/com.athkar.musliem/files/ffmpeg”:错误=2,没有这样的文件或目录
- arrays - 打印最大大小为 20 的反向数组