oauth-2.0 Azure Active Directory -允许的令牌访问群体

jvlzgdj9  于 2022-10-31  发布在  其他
关注(0)|答案(5)|浏览(234)

我正在尝试在Azure中查找有关“允许的令牌审核人”的文档,但似乎没有任何文档。我放置在其中的值是随令牌返回的资源ID。
这是什么意思?任何链接到文档将不胜感激。
PS.实际页面上的学习链接对此只字未提,截图看起来比较旧,没有这个字段。
先谢了

ffscu2ro

ffscu2ro1#

我也在文档方面遇到了一些困难。下面是我使用一个消耗后端API应用程序的Angular前端应用程序所得到的结果。
在前端应用中,用户单击链接并通过Azure Directory进行身份验证。令牌将保留在浏览器中的会话中。
接下来,用户希望与API应用程序进行交互。
具体操作如下:

  • 转到Azure中API应用的应用服务。
  • 导航到身份验证/授权
  • 打开应用服务身份验证
  • 在身份验证提供程序下选择“Azure Active Directory”
  • 选择“高级”按钮
  • 在“客户端ID”字段中,插入来自API应用的Azure Active Directory应用注册的“应用ID”。你应该已经在Azure Active Directory中注册了API应用。
  • 在“允许的令牌受众”字段中,插入来自前端应用程序的Azure Active Directory应用程序注册的“应用程序ID”。你应该已经在Azure Active Directory中注册了前端应用程序。

安全性是如此重要。它让我震惊的是围绕这些东西的文档是多么的混乱。Owin/Katana看起来像是要过时了。基于这个配置,你将不再需要它。Owin是一个过时的另一个标志是与Microsoft/System IdentityModel相关的巨大的破坏性变化,它似乎不可能构建、识别、修复,我希望微软能创建一个“端点”,显示出什么是输出,什么是输入。以及如何完成这个特定的步骤。如果你能让你的应用程序做到这一点,它是真实的干净的。

zpqajqem

zpqajqem2#

快进到2020年,现在有一些关于这个参数的解释。(added in 2019
https://learn.microsoft.com/en-us/azure/app-service/configure-authentication-provider-aad#-enable-azure-active-directory-in-your-app-service-app
允许的令牌访问群体
如果这是云端或服务器应用程序,而且您想要允许来自Web应用程序的验证权杖,请在此处新增Web应用程序的应用程序识别码URI。设定的客户端识别码永远会隐含视为允许的对象。

rggaifut

rggaifut3#

根据我的经验,该字段值(或其中一个值)必须与要发送到服务的令牌的“audience”字段中的内容相匹配(juunas对上面的问题发表了评论). bwmartens上面使用应用ID URI的建议听起来不错,但Azure门户中AAD注册刀片的当前版本没有列出“应用ID URI”值,也没有出现一个“设置-〉属性”了(网站不断变化)。
在我的例子中,仅仅输入应用程序ID是不起作用的。我发现找到这里需要的值的两个最直接的方法是:
1.转到您的服务的AAD注册,并在清单中的“identifierUris”字段中查找。根据我的经验,此处的值应该与您在“允许的令牌受众”列表中输入的值相匹配。
1.获取要发送到服务的JWT并对其进行解码(例如,使用http://jwt.calebb.net/),然后查看“aud”字段的值。将其放入允许的标记受众列表中。

mhd8tkvw

mhd8tkvw4#

错误:JWT验证失败:IDX 10214:访问群体验证失败。访问群体:....表示需要更正应用程序服务上的allowedAudiences ARM配置。
如何纠正:最简单的方法是通过https://resources.azure.com/。向下钻取到App Service资源〉config〉authsettings并按如下所示更正值:

"allowedAudiences":[
"https://<site>.azurewebsites.net"
  ]


您可以导航到门户并单击身份验证的“高级”部分,然后使用Web应用程序的值更新“允许的令牌受众”。随着当前应用程序服务的更改,可以自动完成此操作,但最好检查此配置。
目前,大多数人可能正在使用OAuth 2.0,对他们来说,允许的令牌受众应该使用应用程序注册ID的值进行更新。
请注意,您可以更新Azure AD=〉应用程序注册=〉公开Web应用程序的API =〉值,这应该对您有效。
值00000002-0000-0000-c 000 -000000000000表示Microsoft.Grpah资源,但应该为正确的资源颁发令牌以执行授权。

chhqkbe1

chhqkbe15#

这与JWT规范有关。
“aud”(观众)声明:
“aud”(audience)声明标识了JWT预期的接收者。每个预期处理JWT的主体必须在audience声明中标识其自身的值。如果处理声明的主体在“aud”声明中没有标识其自身的值(当存在该声明时),则JWT必须被拒绝。一般情况下,aud值是一个区分大小写的字符串数组,每个字符串包含一个StringOrURI值.在JWT只有一个受众的特殊情况下,“aud”值可以是包含StringOrURI值的单个区分大小写的字符串。受众值的解释通常是特定于应用程序的。此声明的使用是可选的。
访问群体代表您请求访问的应用程序/资源。
当您请求访问令牌时,可以指定:

  • 一个resource参数:例如,我需要一个access_token来调用https://graph.microsoft.com/ API。该资源也可以是应用程序的client_id:00000003-0000-0000-c000-000000000000 .

在本例中,https://graph.microsoft.com/是应用程序注册的标识符uri,00000003-0000-0000-c000-000000000000是应用程序注册的client_id。在创建应用程序注册时,可以指定多个identifier_uri。标识符uri和客户端ID是唯一的,可用于请求MS Graph API的访问令牌。

  • 一个scope参数:例如,我需要一个access_token来调用https://graph.microsoft.com/ API,但我只需要user.read,因此作用域将是https://graph.microsoft.com/user.read

要获取所有授予的权限的令牌,只需指定{identifier_uri}/.default,在本例中为https://graph.microsoft.com/.default
然后,身份提供者将为请求的应用程序颁发令牌。

  • client_id(如果指定了resource=client_id作为参数)
  • 如果指定resource=identifier_uriscope={identifier_uri}/...作为参数,则为identifier_uri

回到您的问题,当您在应用服务上启用Oauth2时,您需要指定一些参数:

  • client_idclient_secret:这些主要用于X1 E0 F1 X。
  • issuer:此声明标识谁正在颁发令牌(=身份提供者)。对于AAD,它将是https://sts.windows.net/your-tenant-idhttps://sts.windows.net/your-tenant-name。这确保接收到的令牌是由所需的身份提供者颁发的。

按照惯例,发行者声明还定义了如何获取openid配置:{issuer}/.well-known/openid-configuration(请参阅文档)。为了简单起见,我认为openid-configuration端点给予了有关如何验证jwt令牌的信息。

  • Allowed audiences:根据我们所说的,允许的受众可以是受保护应用程序的client_ididentifier_uri(es)

相关问题