2017-03-29 26 views
1

我有一個Azure Web應用程序中託管的Angular4應用程序以及Azure API應用程序中託管的.NET核心Web API。在AAD安全的Azure Web應用程序中檢索訪問令牌

該API使用Azure Active Directory進行保護。目前我使用ng2-adal來獲取訪問令牌,我將這些令牌注入頭部以執行我的API調用。

現在我儘量去除NG2阿達爾模塊,並使用相同的客戶端Id(如API)保護我的Web應用程序與認證/授權功能。當我瀏覽到我的網站時,我被重定向到AAD登錄,並且在我成功登錄後,我被重定向到我的網站。現在,我不想在Web應用程序中調用API(使用相同的ClientId進行保護),但無法找到檢索令牌的方法。

有沒有辦法在這種情況下在我的Angular App中檢索訪問令牌? 它看起來像令牌存儲在AppServiceAuthSession cookie中加密:

enter image description here

+0

我不知道如果我理解的情況下,但你應該有回覆URL中必需的令牌https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-authentication-scenarios#single-page-application-spa – Sentinel

+0

@Sentinel感謝您的支持幫幫我。不幸的是你引用的例子是使用adal.js。 –

+0

我不認爲它引用任何庫,它只是說這個令牌在回覆url中。 – Sentinel

回答

2

AppServiceAuthSession是餅乾其比令牌不同。在這種情況下,您需要修改Azure應用的配置以使其獲取Web API的access_token。

我們可以使用Resource Explore修改類似下面的設置:

1。定位角網應用程序

2。找到config-> authsettings(資源是用來保護您的應用程序天青的ClientID的)

"additionalLoginParams": [ 
    "response_type=code id_token", 
    "resource=3fa9607b-63cc-4050-82b7-91e44ff1df38" 
], 

3. Config中的REDIRECT_URI爲Azure的應用象下面這樣: https://appfei.azurewebsites.net/.auth/login/aad/callback

然後你在登錄后角的應用程序,你可以通過端點得到的access_tokenhttps://appfei.azurewebsites.net/.auth/me

enter image description here

這時我們就需要使用高級Azure的活動設置保護網絡API像下圖啓用的access_token可以調用Web API: enter image description here

+0

這是一個非常有用的答案。非常感謝! –

+0

您是否知道是否可以將其應用於AAD B2C(僅適用於使用B2C創建的本地帳戶的AAD,沒有其他社交提供商) –

+0

基於我的理解,Azure AD B2C擴展了標準OAuth 2.0流程不僅僅是簡單的認證和授權。在這種情況下它也應該支持。更詳細的你可以參考[本文檔](https://docs.microsoft.com/en-us/azure/active-directory-b2c/active-directory-b2c-reference-oauth-code#3-use-the-令牌)。 –

相關問題