繁体   English   中英

如何使用 Azure AD 图表 ZDB974238714CA8DE6434A7CE1DZ08A 创建 API scope

[英]How to create a API scope using Azure AD Graph API

I'm trying to use the Azure AD Graph API to create an API Scope for an Azure AD B2C application. 这是使用门户中的“公开 API”刀片执行的操作。

我尝试将 scope 直接添加到应用程序中,如下所示:

var current = await graphClient.Applications[appId].Request().GetAsync();
var currentList = current.Api.Oauth2PermissionScopes ?? new List<PermissionScope>();
var newScope = new PermissionScope
{
    AdminConsentDescription = scopeDescription,
    AdminConsentDisplayName = scopeDescription,
    IsEnabled = true,
    Type = "Admin",
    Value = scopeName
};
var updated = new Application { 
    Api = new ApiApplication { 
        Oauth2PermissionScopes = currentList.Append(newScope).ToList() 
    } 
};
await graphClient.Applications[appId].Request().UpdateAsync(updated);

但是,当我这样做时,我得到一个例外:

Microsoft.Graph.ServiceException
代码:ValueRequired
消息:属性 api.oauth2PermissionScopes.id 值是必需的,但为空或缺失。

这是否意味着我需要单独创建 scope 然后将其添加到应用程序中? 查看图表 API 文档,如何做到这一点并不明显,我也没有找到任何讨论它的文章。

如何使用 Graph API 创建 API 范围?

if you want to use the Microsoft Graph API to create an API Scope for an Azure AD B2C application, we need to define PermissionScope object. object 应该提供id (它是 GUID)。

例如

  1. 注册申请

  2. 授予 API 权限

    • 管理下,select API 权限
    • 在已配置权限下, select添加权限
    • Select Microsoft APIs 选项卡,然后 select Microsoft Graph
    • Select应用程序权限
    • Select 权限Application.ReadWrite.All的复选框以授予您的应用程序。
    • Select添加权限 按照指示,等待几分钟,然后再继续下一步。
    • Select为(您的租户名称)授予管理员同意
  3. 创建客户端密码

  4. 代码

 static async Task Main(string[] args)
        {
            string clientId = "0159ec7d-f99f-***";
            string clientSecret = "G_fM3QKa***essTRX23t1_o";
            string tenantDomain = "{your tenat name}.onmicrosoft.com";

            IConfidentialClientApplication confidentialClientApplication = ConfidentialClientApplicationBuilder
                        .Create(clientId)
                        .WithTenantId(tenantDomain)
                        .WithClientSecret(clientSecret)
                        .Build();

            ClientCredentialProvider authProvider = new ClientCredentialProvider(confidentialClientApplication);

            GraphServiceClient graphClient = new GraphServiceClient(authProvider);
            var id = "fa89ac50-d5fd-47cb-9f3f-833f413a2ed4";
            var app =await graphClient.Applications[id].Request().GetAsync();
            var updated = new Application();
            if (app.IdentifierUris.ToList().Count == 0) {
                updated.IdentifierUris = new string[] { $"https://{tenantDomain}/{app.AppId}" };
            }

            var appscope = app.Api.Oauth2PermissionScopes.ToList();
            var newScope = new PermissionScope
            {
                Id = Guid.NewGuid(),
                AdminConsentDescription = "Allow the application to have read-only access to all Employee data",
                AdminConsentDisplayName = "Read-only access to Employee records",
                IsEnabled = true,
                Type = "Admin",
                Value = "Employees.Read.All"
            };
            appscope.Add(newScope);
            updated.Api = new ApiApplication { Oauth2PermissionScopes =appscope };
            await graphClient.Applications[id].Request().UpdateAsync(updated);


        }

在此处输入图像描述

更多详情,请参阅此处

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM