如何使用 Azure SDK 创建应用程序注册

How to create app registration using Azure SDK

我需要使用 Azure SDK(或使用 rest api 调用,如果 SDK 无法创建应用程序注册)

通常您使用门户手动执行此操作:

或调用 Azure CLI 命令az ad app create

如何从 SDK 或 REST 服务执行此操作

您可以使用 Microsoft Graph API。

用于创建应用程序的 API 是:https://developer.microsoft.com/en-us/graph/docs/api-reference/beta/api/application_post_applications 更普遍地操纵应用程序:https://developer.microsoft.com/en-us/graph/docs/api-reference/beta/resources/application

有两种方法可以做到这一点。您可以根据自己的情况选择有效的方法。

  1. Microsoft Graph API Beta 端点

    Microsoft Graph API Beta endpoint and working with Application resource(正如 Jean-Marc Prieur 早些时候的回答)。

    POST https://graph.microsoft.com/beta/applications
    

    注意:这可行,但需要注意的是它是测试端点。因此,如果您为 testing/learning 执行此操作,那很好,但如果您计划将其用于生产应用程序代码,则不推荐这样做。

    请参阅Microsoft Graph beta endpoint documentation本身以查看微软的推荐。

    另请注意,由于目前此功能处于 Beta 阶段,您将无法使用 Microsoft Graph .NET Client Library,但一旦正式发布,甚至客户端库也可能会更新以支持这些操作. 请参阅具有相似上下文的

  2. Azure AD 图 API

    Azure AD Graph API 较旧 API 和 Microsoft Graph API 较新,推荐用于任何可能的操作。您的情况恰好是 Microsoft Graph API 稳定版 (v1.0) 尚未跟上并且该功能仅在测试版中可用,因此对于生产版本代码,您仍应使用较旧的 Azure AD Graph API 或者它的客户端库。了解比较和特殊用例 here

    您可以使用 Azure AD Graph API 和应用程序实体。 POST 操作可以帮助您创建一个应用程序。

    POST https://graph.windows.net/{tenant-id}/applications?api-version=1.6
    

    阅读详情:Application Entity - Azure AD Graph API

    您可以选择直接调用此 API 或使用 Azure AD Graph Client Library

    这是创建 Azure AD 应用程序的快速粗略示例代码 (C#)

    请注意,我将 app.PublicClient 标志保持为 true 以注册为本机应用程序。如果您想将其注册为 Web 应用程序,可以将其设置为 false。

    设置:我在 Azure AD 中注册了一个应用程序,它具有作为应用程序权限所需的权限 - 读取和写入所有应用程序并为此应用程序授予权限。现在使用此应用程序的客户端 ID 和客户端密码,获取令牌并调用 Azure AD Graph API 来创建应用程序。使用应用程序权限不是强制性的,您也可以通过提示用户输入凭据来使用委托权限。请参阅指向两个更详细示例的链接(旧示例但仍然有用)。

    • Console Application using Graph client library

    • Web app calls Graph using Graph client library

    • Azure AD Graph Client Library 2.0 Announcement page

      using System;
      using System.Collections.Generic;
      using System.Linq;
      using System.Text;
      using System.Threading.Tasks;
      using Microsoft.Azure.ActiveDirectory.GraphClient;
      using Microsoft.IdentityModel.Clients.ActiveDirectory;
      
      namespace CreateAzureADApplication
      {
          class Program
          {
              static void Main(string[] args)
              {
      
                  ActiveDirectoryClient directoryClient;
      
                  ActiveDirectoryClient activeDirectoryClient = new ActiveDirectoryClient(new Uri("https://graph.windows.net/{yourAADGUID}"),
          async () => await GetTokenForApplication());
      
      
                  Application app = new Application();
                  app.DisplayName = "My Azure AD Native App";
                  app.PublicClient = true;
                  app.Homepage = "https://myazureadnativeapp";
                  activeDirectoryClient.Applications.AddApplicationAsync(app).GetAwaiter().GetResult();
      
               }
      
           public static async Task<string> GetTokenForApplication()
           {
                 AuthenticationContext authenticationContext = new AuthenticationContext(
              "https://login.microsoftonline.com/{yourAADGUID}",
              false);
      
          // Configuration for OAuth client credentials 
      
              ClientCredential clientCred = new ClientCredential("yourappclientId",
                  "yourappclientsecret"
                  );
              AuthenticationResult authenticationResult =
                  await authenticationContext.AcquireTokenAsync("https://graph.windows.net", clientCred);
      
              return authenticationResult.AccessToken;
      
          }
        }
      }