在AAD安全Azure Web App中检索访问令牌

Mar*_*ndl 5 azure angularjs azure-active-directory

我有Azure Web应用程序中托管的Angular4应用程序和Azure API应用程序中托管的.NET核心Web API.

该API使用Azure Active Directory进行保护.目前,我使用ng2-adal获取访问令牌,我将其注入标头以执行我的API调用.

现在,我尝试使用相同的 ClientId(如API)删除ng2-adal模块并使用身份验证/授权功能保护我的Web App .当我浏览我的网站时,我被重定向到AAD登录,在我成功登录后,我被重定向到我的网站.现在,我不想在我的Web App中调用API(使用相同的ClientId进行保护),但无法找到检索令牌的方法.

在这种情况下,有没有办法在Angular App检索访问令牌?看起来令牌在AppServiceAuthSession Cookie中加密存储:

在此输入图像描述

Fei*_*SFT 7

AppServiceAuthSession是饼干比一个不同的令牌.在这种情况下,您需要修改Azure应用程序的配置,以使其获取Web API的access_token.

我们可以使用资源浏览来修改如下设置:

1.找到有角度的网络应用程序

2.找到config-> authsettings(资源是Azure应用程序的clientId,用于保护您的应用程序)

"additionalLoginParams": [
  "response_type=code id_token",
  "resource=3fa9607b-63cc-4050-82b7-91e44ff1df38"
],
Run Code Online (Sandbox Code Playgroud)

3.为Azure应用程序配置redirect_uri,如下所示: https://appfei.azurewebsites.net/.auth/login/aad/callback

然后在登录角度应用程序后,您可以通过端点获取access_token: https://appfei.azurewebsites.net/.auth/me

在此输入图像描述

然后我们需要使用Advanced Azure Active Settings保护Web API,如下图所示,以使access_token可以调用Web API: 在此输入图像描述

  • 当我浏览到 URL 时可以获得令牌,但是当我尝试从应用程序服务调用它时,我收到 401 未经授权?这显然是在我登录之后 (2认同)

Vin*_*zon 6

我已经为此工作了一个星期了。所以,我想分享一下我是如何得到它的。

我能够使用 AAD 对我的应用程序进行身份验证。

我的 cookie 存储中有 AppServiceAuthSession。

然后在我的应用程序中,我调用了 auth/me API。

https://yourwebsite.azurewebsites.net/.auth/me

所以,就像:

this.$http
  .get('https://yourwebsite.azurewebsites.net/.auth/me').then(response => {
    console.log(".auth/me", response)
  }, err => {
    console.log("Error: ", err)
  })
Run Code Online (Sandbox Code Playgroud)

其实我用的是Vue 调用您的 HTTP 可能会有所不同。就是这样。

我基本上调用了 auth/me API 来检索我需要的信息。

PS 当然,您需要经过身份验证。