使用Microsoft Graph API在Azure AD中注册(创建)应用程序的方法

时间:2020-08-25 14:12:11

标签: azure azure-ad-graph-api

当前,我正在使用应用程序权限在azure AD中注册应用程序。我正在尝试找出是否有更好的选择吗?

当前方法:-

  • 使用具有“ Application.ReadWrite.OwnedBy”应用程序许可(需要管理员同意)的azure门户在azure AD中注册一个应用。

enter image description here

  • 使用该应用程序注册其他应用程序,如下所示
ClientCredentialProvider authProvider = new ClientCredentialProvider(confidentialClientApplication);
        GraphServiceClient graphClient = new GraphServiceClient(authProvider);

        var application = new Application
        {
            DisplayName = "App_One",
            RequiredResourceAccess = new List<RequiredResourceAccess>()
            {
                new RequiredResourceAccess
                {
                    ResourceAppId = "cfa8b339-82a2-471a-a3c9-0fc0be7a4093",
                    ResourceAccess = new List<ResourceAccess>()
                    {
                        new ResourceAccess
                        {
                            //API permission :- user_impersonation
                            Id = Guid.Parse("f53da476-18e3-4152-8e01-aec403e6edc0"),
                            Type = "Scope"
                        }
                    }
                }
            }
        };

        //Create(Register) application
        var app = await graphClient.Applications
              .Request().AddAsync(application);

注意:-我正在将.net core 2.1与OpenIdConnect一起使用。

当前方法的局限性:-

  1. 需要在具有“ Application.ReadWrite.OwnedBy”应用程序许可(需要管理员同意)的情况下手动注册一个应用程序。

我试图找出其他方法,然后发现下面的堆栈溢出问题已经解答

这给出了有关已授予权限

的一些提示

问题:-

  1. 在没有使用手动注册的应用程序(有许可)的情况下,还有其他更好的方法吗?
  2. 当前,用户(在Azure AD中)使用OpenIdConnect登录Web应用程序。我可以使用用户令牌(登录后)注册应用程序(意味着用户授权后可以使用此令牌创建图形客户端)吗?如果是,我该怎么办?
  3. 是否可以在委派权限的帮助下使用“已登录”用户主体(声明)注册应用程序?(我对此并不太了解,无法清楚地询问这个问题)?

1 个答案:

答案 0 :(得分:0)

有没有更好的方法可以实现这一目标,而无需使用手册 注册的应用程序(获得许可)?

无论您使用应用程序权限还是委派权限来访问graph api,都必须首先手动创建一个应用程序(或者您必须首先拥有一个应用程序),然后才能向该应用程序授予应用程序权限或委派权限,并且那么您可以使用此应用程序注册其他应用程序。

当前,用户(在Azure AD中)使用OpenIdConnect登录Web应用程序。能够 我使用用户令牌(登录后)注册应用(指用户之后 授权可以使用此令牌创建图形客户端)?如果可以,我该怎么办 这样吗?

是的,您可以在登录用户后使用访问令牌调用MS graph api创建应用程序,请参阅:auth code flowsample

是否可以使用“已登录”用户注册应用 委托人(权利要求)在委派权限的帮助下?(我没有 关于这一点的很多知识可以清除我的疑问 问题)?

您可以使用基于委派权限的应用程序来调用MS graph api来注册应用程序。 Here是一个详细的示例,但正如我之前说的,完成操作的不是用户自己,而是由应用程序代表用户完成操作。