2017-08-03 39 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

相關問題