3

当前配置:

        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 流工作?
4

0 回答 0