当前配置:
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 流工作?