当前位置: 首页 > 知识库问答 >
问题:

在AAD安全的Azure Web应用中检索访问令牌

金子平
2023-03-14

我有一个Angular4应用程序托管在Azure Web应用程序和一个应用程序中。NET核心Web API托管在Azure API应用程序中。

该API由Azure Active Directory保护。目前,我使用ng2 adal获取一个访问令牌,并将其注入头中以执行API调用。

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

在这种情况下,有没有办法在我的Angular应用程序中检索访问令牌?看起来令牌被加密存储在AppServiceAuth会话Cookie中:

共有3个答案

易超
2023-03-14

找到此解决方案:

只需在身份验证/授权时添加应用程序url-

因此webapi将自动接受这些cookie。

ps:确保您的ajax请求正在传递这些cookies。

张森
2023-03-14

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

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

我的Cookie存储中有AppServiceAuthsession。

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

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)
  })

我实际上在使用Vue。调用HTTP可能会有所不同。就这样。

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

另外,你当然需要经过认证。

壤驷承
2023-03-14

AppServiceAuthSession是与令牌不同的cookie。在此场景中,您需要修改Azure应用程序的配置,使其获得web API的访问令牌。

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

1.找到angular web应用程序

2.找到配置文件-

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

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

然后,在登录angular应用程序后,您可以通过endpoint获得access_令牌:https://appfei.azurewebsites.net/.auth/me

 类似资料:
  • 我开发了一些Rest应用程序,但Spring安全配置存在问题。 在我的Rest应用程序中,帮我处理一下Spring Security 4的xml配置。 当我发送用户名时 这是我的网络.xml: http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 更新 1: 这是我发送请求时的日志:

  • 我无法从Spotify获得Android应用的访问令牌,因为我可以连接到endpoint。 我需要我的Android应用程序的访问令牌,我尝试了以下方法:1)Spotify Android auth library。我找不到spotify auth版本。他们谈论的aar。2) 手动生成url。下面是一个例子: 当我尝试连接时,我得到了各种可能的错误:“缺少所需的参数:client_id”、“INV

  • 以下是Spotify API的文档(我使用的是隐式授权流):https://beta . developer . Spotify . com/documentation/general/guides/authorization-guide/# Implicit-Grant-Flow 我正在尝试在Google表格中编写脚本。我专注于基本设置,但我似乎无法让访问令牌正常工作。 解决了的: 我目前收到以

  • 因此,我们创建了一个包含一些私有类成员的简单类,并自动为其生成getter。但getter实际上返回了对该成员的引用,从而获得了对私有成员的完全访问权。这样可以吗?下面是一个类的代码: 主要方法代码: 和输出: [字符串1,字符串2] [字符串1、字符串2、字符串3] 我已经将getter更改为这个: 但问题仍然是,如果不是为了安全,吸气剂的作用是什么?什么是正确的书写方式?

  • 基于这篇文章和这个问题,刷新令牌应该是长寿命的,访问令牌应该是短寿命的。我将存储我的刷新令牌超过或等于60天,我的访问令牌20分钟或更多/更少,但永远不会超过一个小时。 我在理解这些令牌的使用时的主要难点是两个令牌的存储方法。我明白,我应该将刷新令牌存储为,使其无法通过脚本访问(XSS攻击),并将访问令牌存储在本地,或,以便在API调用中作为密钥使用。这样做是正确的方法吗?我是否应该按照本文中的建