使用Azure AD进行WebApp WebApi身份验证中的令牌验证?

时间:2015-09-03 08:30:43

标签: authentication azure azure-ad-graph-api

使用WebApp< => WebApi身份验证方案,我从WebApp中的Azure AD获取JWT令牌并将其传递给WebApi。在WebApi中,从WebApp的令牌生成Azure GraphAPI的访问令牌,以调用GraphAPI进行授权。

WebApp和WebApi都在Azure租户门户上注册为单个应用程序,因为WebApp和WebApi的用户身份验证都相同。

这是一个Intranet应用程序,对AD中的所有用户开放。有关令牌验证或身份验证的几个问题。

  1. 我是否需要在WebApp和WebApi中验证令牌中的租户和受众?
  2. 我需要在WebApp,WebApi或两者中执行哪些其他令牌验证?
  3. 由于JWT令牌经过数字签名和加密。当从WebApp传递令牌时,不在WebApi中进行验证会有什么影响?

    请告知。

2 个答案:

答案 0 :(得分:1)

我们只对Audience进行验证(如果您的申请不是多租户,您可以使用租户,但对我们来说,因为它是多租户,我们使用“普通”作为租户)。

如果我们不在我们的API中进行受众验证,那么获取图形令牌的任何应用程序都可以调用您的应用程序(唯一的验证是令牌过期或不过期)。

JWT令牌未加密,它是基于64位编码的,您可以使用http://jwt.calebb.net/之类的工具查看令牌中的属性。

答案 1 :(得分:1)

经过很长时间的努力,我想出了这个:

需要检索第一个x5c密钥:https://login.windows.net/common/discovery/keys

然后,安装https://github.com/auth0/node-jsonwebtoken 遗憾的是,该库不支持证书验证。您需要将其转换为密钥(私人或公共)。

然后代码是:

NgComponentOutlet