使用API在Azure AD中注册应用程序(应用程序注册)?

使用API在Azure AD中注册应用程序(应用程序注册)?,azure,api,asp.net-core,azure-ad-graph-api,Azure,Api,Asp.net Core,Azure Ad Graph Api,我需要使用.NETCore2.0中的API在Azure AD(应用程序注册)中注册应用程序。 我已尝试使用power shell注册应用程序。它正在工作。但我需要使用API来实现这一点,因为在web服务器上部署PowerShell脚本时会出现授权问题 是否有我们可以注册API的API 我试图找到Microsoft Graph API,但没有找到任何示例。我还尝试查找示例,但他们正在使用powershell脚本进行应用程序注册。根据您的要求,您可以使用microsoft graphPOSThttp

我需要使用.NETCore2.0中的API在Azure AD(应用程序注册)中注册应用程序。 我已尝试使用power shell注册应用程序。它正在工作。但我需要使用API来实现这一点,因为在web服务器上部署PowerShell脚本时会出现授权问题

是否有我们可以注册API的API


我试图找到Microsoft Graph API,但没有找到任何示例。我还尝试查找示例,但他们正在使用powershell脚本进行应用程序注册。

根据您的要求,您可以使用microsoft graph
POSThttps://graph.microsoft.com/v1.0/applications

要使用此api,您需要完成授权。由于您担心授权问题,我建议您使用client_凭证授权流来完成此操作。您可以参考graph api文档中的以下代码,通过sdk请求api

GraphServiceClient graphClient = new GraphServiceClient( authProvider );

var application = new Application
{
    DisplayName = "Display name"
};

await graphClient.Applications
    .Request()
    .AddAsync(application);
顺便说一句,您可以参考这篇文章,了解如何在上面的代码中获取
authProvider

==============================================更新===============================

您需要将权限添加到您创建的应用程序中。我们可以找到需要以下权限的:

因此,我们需要向您创建的应用程序添加至少一个权限,请参阅以下步骤:

添加权限后,不要忘记授予管理员许可

之后,运行代码。它将创建新的应用程序成功

===============================添加权限的更新===================

要创建具有某些权限的应用程序,可以使用以下代码:

using Microsoft.Graph;
using Microsoft.Graph.Auth;
using Microsoft.Identity.Client;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace ConsoleApp28
{
    class Program
    {
        static async Task Main(string[] args)
        {
            Console.WriteLine("Hello World!");

            IConfidentialClientApplication confidentialClientApplication = ConfidentialClientApplicationBuilder
            .Create("<client id>")
            .WithTenantId("<tenant id>")
            .WithClientSecret("<client secret>")
            .Build();

            ClientCredentialProvider authProvider = new ClientCredentialProvider(confidentialClientApplication);

            GraphServiceClient graphClient = new GraphServiceClient(authProvider);
            
            var application = new Application
            {
                DisplayName = "huryNewappWithPermissions",
                RequiredResourceAccess = new List<RequiredResourceAccess>()
                {
                    new RequiredResourceAccess
                    {
                        ResourceAppId = "00000003-0000-0000-c000-000000000000",
                        ResourceAccess = new List<ResourceAccess>()
                        {
                            new ResourceAccess
                            {
                                Id = Guid.Parse("e1fe6dd8-ba31-4d61-89e7-88639da4683d"), //id of User.Read(Delegated) permission
                                Type = "Scope"
                            },
                            new ResourceAccess
                            {
                                Id = Guid.Parse("1bfefb4e-e0b5-418b-a88f-73c46d2cc8e9"), //id of Application.ReadWrite.All(Application) permission
                                Type = "Role"
                            }
                        }
                    }
                }
            };

            await graphClient.Applications.Request().AddAsync(application);
        }
    }
}

然后找到权限id并将其放入上面的代码中
Type=“Scope”
表示权限为“委托”类型,
Type=“角色”
表示权限为“应用”类型。

欢迎访问stackoverflow.com。对于您遇到的任何特定问题,请包括一个。请同时阅读和阅读。确保你的问题是具体的,不要过于宽泛,另请参见。另外,一定要带上stackoverflow.com/tour(你会得到一个徽章!)嗨,Harish,我可以知道你的问题是否解决了吗?如果还有什么问题,请告诉我。你好,我的问题到现在还没有解决。根据你的回答,我做了改变。但问题是如何生成clientId和clientsecret,因为我正在创建新的应用程序。为了解决这个问题,我使用azure portal在azure AD中创建了一个应用程序,并使用该clientId和clientsecret,我尝试通过代码创建新的应用程序,但它给了我一个例外,即“权限不足”。现在,我正试图找出他们需要什么类型的特权&如何给予它?嗨@Harish,请参考我答案中的“更新”。嗨,Hury,谢谢你的努力。我已经这样做了。在授予管理员许可后,它在我的个人帐户中工作。但在我的组织目录中,我无权给予管理员许可。因此,我不能这样做。没有管理员同意,还有其他方法吗?就像用户使用azure AD凭据登录一样,我可以使用该令牌创建应用程序。在azure portal中创建应用程序时点击b'c。我们不需要管理员同意。还有其他方法吗?再次感谢你的努力。嗨@Harish,恐怕没有授权管理员的同意,我们不能这么做。创建新的应用程序,并在必要时为其分配权限。因此,您必须要求组织目录中的管理员用户授予管理员许可。如何在创建应用程序时授予“API权限”?或者如何更新应用程序以授予“API”权限“?@harishishosode我会做一些研究,然后回来。@harishishosode你可以通过这个api找到
user\u模拟
权限
https://graph.microsoft.com/v1.0/serviceprincipals?$filter=appId eq“cfa8b339-82a2-471a-a3c9-0fc0be7a4093”
。您可以修改代码,将
ResourceAppId
更改为
cfa8b339-82a2-471a-a3c9-0fc0be7a4093
,并使用从搜索api响应的权限id。
https://graph.microsoft.com/v1.0/serviceprincipals?$filter=appId eq '00000003-0000-0000-c000-000000000000'