0

(以下示例中的所有 ID 都是组成的。我添加了它们以说明某些参数的格式)。

我的租户位于 acme.co.uk,但我希望部署在https://subdomain.acme2.co.uk的 Web 应用程序将用户身份验证委托给 Azure AD。

我使用新门户注册了我的应用程序,如下所示:(字段名称是天蓝色门户上使用的名称)。

应用 ID 网址:https ://acme.co.uk/11111111-2222-3333-4444-555555555555

主页网址:https ://subdomain.acme2.co.uk/api/auth/aad

回复网址:https ://subdomain.acme2.co.uk/api/auth/aad/callback

并创建了一个不会过期的密钥:'111111111111111111/aaaaaaaaaaaaaaaaaaaaaa='

我一直在使用 v1 端点作为指南来关注 passport-azure-ad github 示例。

{
  allowHttpForRedirectUrl: false,
  clientID: 'https://acme.co.uk/11111111-2222-3333-4444-555555555555',
  clientSecret: '111111111111111111/aaaaaaaaaaaaaaaaaaaaaaaa=',
  identityMetadata: 'https://login.microsoftonline.com/acme.co.uk/.well-known/openid-configuration',
  isB2C: false,
  issuer: null,
  loggingLevel: 'info',
  passReqToCallback: false,
  redirectUrl: 'https://subdomain.acme2.co.uk/api/auth/aad/callback',
  responseMode: 'form_post',
  responseType: 'code id_token',
  skipUserProfile: true,
  useCookieInsteadOfSession: false,
  validateIssuer: true
}

当我在浏览器中访问“ https://subdomain.acme2.co.uk/api/auth/aad ”时,我会被重定向到 MS 登录,然后我会这样做,但是当重定向回“ https:// subdomain.acme2.co.uk/api/auth/aad/callback '发生,我没有通过身份验证。

检查来自回调 POST 请求的标头,我看到:

In _validateResponse: jwt audience is invalid. expected: https://acme.co.uk/11111111-2222-3333-4444-555555555555,spn:https://acme.co.uk/11111111-2222-3333-4444-555555555555

任何想法我做错了什么???[:-|

(除此之外:调试这很痛苦,因为我在 docker 中运行并且重定向似乎无法正常工作,所以我必须部署到真实环境的 ATM)。

4

2 回答 2

1

好的,找到了... clientID: ' https://acme.co.uk/11111111-2222-3333-4444-555555555555 ' 是罪魁祸首。

那应该是应用 ID 而不是应用 ID URI。多哈。非常感谢@Alex Blex 的指导。这是最有帮助的。

于 2017-10-26T13:54:23.427 回答
0

在我的例子中,我正在使用 .env 并从那里获取 clientId。

我通过删除我的配置和 .env 文件中的 clientID 周围的引号解决了这个问题。

于 2020-05-15T06:58:34.437 回答