1

我有一个 SPA,它使用msal.js针对在Application Registration Portal 注册的应用程序对用户进行身份验证。它成功地检索了一个令牌,到目前为止一切都很好。

然后我有一个 ASP.NET Web API 设置,它应该使用来自 SPA 的令牌代表用户向 Microsoft Graph 发出请求,这就是我遇到麻烦的地方。

到目前为止,我已经在 API 上设置了一个 OWIN 中间件,它应该在向图形发出请求之前验证令牌,但无论我尝试什么,它总是无效的。我试过了UseOpenIdConnectAuthenticationUseOAuthBearerAuthenticationUseJwtBearerAuthentication仍然没有成功。SPA 和 API 使用相同的客户端 ID,并且颁发者设置为https://login.microsoftonline.com/common/v2.0.

我已经阅读了很多来自 MS 的 SO 问题和示例,但似乎没有任何东西可以解决这个特定的设置。根据这个我至少认为这是可能的?

这是我正在使用的 nuget 包:

  <package id="Owin" version="1.0" targetFramework="net452" />
  <package id="Microsoft.Owin" version="3.1.0" targetFramework="net452" />
  <package id="Microsoft.Owin.Security" version="3.1.0" targetFramework="net452" />
  <package id="Microsoft.Owin.Security.Jwt" version="3.1.0" targetFramework="net452" />
  <package id="Microsoft.Owin.Security.OAuth" version="3.1.0" targetFramework="net452" />
  <package id="Microsoft.Owin.Security.OpenIdConnect" version="3.1.0" targetFramework="net452" />

我是否使用了正确的软件包,甚至可以这样设置吗?会喜欢一些关于我做错了什么的指示。

提前致谢!

4

1 回答 1

1

“OAuth 2 On-Behalf-Of flow”正好解决了这个问题。此处记录了 AAD V2 应用程序模型。

OAuth 2.0 On-Behalf-Of 流程服务于应用程序调用服务/Web API 的用例,而后者又需要调用另一个服务/Web API。这个想法是通过请求链传播委托的用户身份和权限。为了使中间层服务向下游服务发出经过身份验证的请求,它需要代表用户保护来自 Azure Active Directory (Azure AD) 的访问令牌。

于 2017-08-03T20:41:13.340 回答