gpt4 book ai didi

c# - 如何使用 Azure AD 生成具有角色定义的 token

转载 作者:行者123 更新时间:2023-12-02 06:48:34 25 4
gpt4 key购买 nike

我有这样的场景:我有一个应用服务,我将其授权设置为“允许匿名请求”,并将身份验证提供程序设置为 Active Directory 设置 Azure AD 应用程序。

在这个 AD 应用程序中,我在其 list 中添加了一些角色,如下所示:

"appRoles": [
{
"allowedMemberTypes": [
"User"
],
"displayName": "Approver",
"id": "8f29f99b-5c77-4fba-a310-4a5c0574e8ff",
"isEnabled": true,
"description": "Approvers can mark documents as approved",
"value": "approver"
},

发布到 URL https://login.windows.net//oauth2/token 和我的 AD 应用程序 ID 我收到一个 token ,我期望的是找到此 token 中的角色。它不起作用,我找不到原因。

我想要的是使用 Azure 并在我的 API 中生成 token ,设置 [Authorize(Role="approver")] 来过滤使用同一租户的不同客户端访问的 Controller 。

最佳答案

如果您的场景是关于分配应用程序角色用户/组。将用户分配给应用程序角色(通过直接分配或通过分配给用户所属的组)后,当用户登录应用程序时,Azure AD 将在 token 中包含角色声明。然后,应用程序可以使用 IsInRole(“reader”) 或 .net 的 [Authorize (Roles=”reader”)] 等结构来授权用户。你应该做:

"allowedMemberTypes": [
"User"
],

那么您就不需要使用客户端凭据流程。和here是一篇关于如何配置的文章,另请参阅代码示例 here .

如果您的场景是允许 Web 应用程序和 Web API 充当客户端并访问其他资源 API,则请求将资源 API 的应用程序角色分配给它们(使用客户端凭据流)。当 Azure AD 客户安装客户端应用程序时,该角色会分配给客户端应用程序。您可以引用以下步骤来实现:

  1. 在经典 Azure 广告门户中创建新的广告应用程序: enter image description here
  2. 设置登录网址和应用 ID 网址。

  3. 在配置选项卡上,向下滚动到名为“其他应用程序的权限”的部分。在这里,通过首先选择客户端应用程序为其请求应用程序角色的 API,然后在应用程序权限下拉列表中选择所需的应用程序角色来添加新权限。在我的 API 应用程序(名称是 testRole)中,我设置了如下角色: enter image description here

然后选择应用程序角色: enter image description here

  • 然后我们可以获取 token ,让我的网络应用程序使用客户端凭据流访问“testRole”API:

    发布https://login.microsoftonline.com/YourTenant/oauth2/token

    内容类型:application/x-www-form-urlencoded

    resource=http%3A%2F%2Ftestbasic1.onmicrosoft.com%2Ftestrole&client_id=&client_secret=&grant_type=client_credentials

  • 然后访问 token 将包含应用程序角色: enter image description here

  • 您可以从 here 阅读有关使用 Azure AD 的云应用程序中基于角色的访问控制的更多信息。

    编辑

    要在新门户中设置其他应用程序的权限:1. 点击左侧面板中的 azure 广告图标,选择网络应用程序,点击所需权限,点击添加,选择 API,然后搜索您要访问的 API: enter image description here

  • 然后选择您想要的应用程序权限: enter image description here
  • 关于c# - 如何使用 Azure AD 生成具有角色定义的 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42656708/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com