passport-azure-ad:为什么我得到" jwt观众无效"?

时间:2017-10-25 16:52:02

标签: node.js azure authentication adal passport-azure-ad

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

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

我使用new portal注册了我的应用,如下所示: (字段名称是azure门户网站上使用的名称)。

应用ID 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 / aaaaaaaaaaaaaaaaaaaaaaaa ='

我一直关注passport-azure-ad github sample using v1 endpoint作为指南。

db.review.aggregate([  
   {  
      $lookup:{  
         from:"series",
         localField:"episode",
         foreignField:"seasons.episodes._id",
         as:"episode_entry"
      }
   }
]).pretty()

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

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

{
  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
}

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

(旁白:调试这是一个痛苦,因为我在docker中运行并且重定向似乎无法正常工作,因此我必须部署到真实环境中的ATM)。

2 个答案:

答案 0 :(得分:0)

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

那应该是app Id而不是app Id URI。卫生署。非常感谢@Alex Blex的指导。这是最有帮助的。

答案 1 :(得分:0)

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

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