如何在C#中使用Azure Active Directory图形客户端创建角色分配?

如何在C#中使用Azure Active Directory图形客户端创建角色分配?,c#,azure-active-directory,C#,Azure Active Directory,我正在使用此库:Microsoft.Azure.ActiveDirectory.GraphClient 类:ActiveDirectoryClient 我想让一个应用程序(我有appID)“所有者”访问一些订阅。我该怎么做呢?谢谢这个问题的整个前提是不正确的。GraphClient不是管理此类授权的正确客户端。合适的API库是Microsoft.Azure.Management.Authorization和类AuthorizationManagementClient 我将发布关于实际通话顺序的附

我正在使用此库:
Microsoft.Azure.ActiveDirectory.GraphClient
类:
ActiveDirectoryClient


我想让一个应用程序(我有appID)“所有者”访问一些订阅。我该怎么做呢?谢谢

这个问题的整个前提是不正确的。
GraphClient
不是管理此类授权的正确客户端。合适的API库是
Microsoft.Azure.Management.Authorization
和类
AuthorizationManagementClient

我将发布关于实际通话顺序的附加说明

***更新***********

正如承诺的那样,下面是示例代码:

    public static async Task<IServicePrincipal> GetServicePrincipalAsync(string accessToken, string tenantId, string clientId)
    {
        var graphClient = NewActiveDirectoryClient(accessToken, tenantId);
        var matches = await graphClient.ServicePrincipals.Where(sp => sp.AppId == clientId).ExecuteAsync();
        return matches.CurrentPage.ToList().FirstOrDefault();
    }
    private static ActiveDirectoryClient NewActiveDirectoryClient(string accessToken, string tenantId)
    {
        TaskCompletionSource<string> tcs = new TaskCompletionSource<string>();
        tcs.SetResult(accessToken);
        return new ActiveDirectoryClient(
            new Uri($"{GraphApiBaseUrl}{tenantId}"),
            async () => { return await tcs.Task; });
    }

这个问题的整个前提是不正确的。
GraphClient
不是管理此类授权的正确客户端。合适的API库是
Microsoft.Azure.Management.Authorization
和类
AuthorizationManagementClient

我将发布关于实际通话顺序的附加说明

***更新***********

正如承诺的那样,下面是示例代码:

    public static async Task<IServicePrincipal> GetServicePrincipalAsync(string accessToken, string tenantId, string clientId)
    {
        var graphClient = NewActiveDirectoryClient(accessToken, tenantId);
        var matches = await graphClient.ServicePrincipals.Where(sp => sp.AppId == clientId).ExecuteAsync();
        return matches.CurrentPage.ToList().FirstOrDefault();
    }
    private static ActiveDirectoryClient NewActiveDirectoryClient(string accessToken, string tenantId)
    {
        TaskCompletionSource<string> tcs = new TaskCompletionSource<string>();
        tcs.SetResult(accessToken);
        return new ActiveDirectoryClient(
            new Uri($"{GraphApiBaseUrl}{tenantId}"),
            async () => { return await tcs.Task; });
    }

到目前为止你尝试了什么?谢谢你的编辑Philippe。以下Powershell命令执行此任务:
New AzureRmRoleAssignment-RoleDefinitionName Reader-ServicePrincipalName$AzureAdaApplication.ApplicationId.Guid
,但它使用的是旧样式的管理调用。我无法将旧式调用映射到新的资源管理调用。到目前为止,您尝试了什么?感谢Philippe的编辑。以下Powershell命令执行此任务:
New AzureRmRoleAssignment-RoleDefinitionName Reader-ServicePrincipalName$AzureAdaApplication.ApplicationId.Guid
,但它使用的是旧样式的管理调用。我无法将旧式调用映射到新的资源管理调用