2017-08-03 25 views
1

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

然后,我有一个ASP.NET Web API安装程序,它应该使用来自SPA的令牌代表用户向Microsoft Graph发出请求,这是我遇到问题的地方。

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

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

这里是我使用的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" /> 

点多,是它甚至可以这样设置?会喜欢一些关于我做错了什么的指针。

提前致谢!

回答

1

此问题由“OAuth 2 On-Behalf-Of flow”精确解决。这是记录在AAD V2应用程序模型here

的OAuth的2.0所代理人流动提供其中一个 应用程序调用一个服务/网络API,这又需要调用 另一个服务/网络API的使用情况。这个想法是通过请求链传播委派的用户身份和权限 。对于 中间层服务向下游 服务发出已认证的请求,它需要代表用户为Azure Active 目录(Azure AD)保护访问令牌。

+1

原来我讨厌搞乱了API中的令牌验证,但是你的链接是正确设置On-Behalf-Of流程的主要帮助!非常感谢! – awnton

相关问题