首页 > 解决方案 > 使用 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 加密密钥并生成它们的东西,或者它只是有点倒退。

标签: expressencryptioncookiesaespassport-azure-ad

解决方案


推荐阅读