如何使用OpenID和Microsoft Graph枚举Azure ActiveDirectory组?

时间:2018-03-01 23:04:49

标签: c# azure-active-directory microsoft-graph

我有以下数值:

如何使用这些值创建Microsoft Graph服务客户端?

var graphClient = new GraphServiceClient(
    // What goes here?
);

我需要客户端枚举AAD组。

1 个答案:

答案 0 :(得分:1)

根据您的描述,我假设您使用的是AAD v1.0,要使用Microsoft Graph客户端SDK,您需要使用应用程序权限向 Microsoft Graph API添加所需权限或Azure Portal上的AAD应用程序的委派权限。应用程序权限与委派权限之间存在差异,您可以按照here

对于Web应用程序并使用基于用户的身份验证流程,您可以按照以下示例进行操作:

Calling the Azure AD Graph API in a web application

Microsoft Graph Snippets Sample for ASP.NET 4.6

注意:对于您的方案,您需要合并上述两个示例中的代码。或者你可以创建AAD v2.0应用程序,然后使用第二个样本。

对于服务器到服务器方案,您可以使用ADAL检索访问令牌以初始化GraphServiceClient

    private static async Task<string> GetAccessTokenAsync()
    {
        string tenantId = "<tenantId>";
        string clientId = "<clientId>";
        string clientSecrets = "<clientSecrets>";
        Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationResult result = null;

        var context = new AuthenticationContext(String.Format("https://login.windows.net/{0}", tenantId)); 

        var authParam = new PlatformParameters(PromptBehavior.Never, null);
        var result = await context.AcquireTokenAsync(
                "https://graph.microsoft.com"
                , new Microsoft.IdentityModel.Clients.ActiveDirectory.ClientCredential(clientId, clientSecrets)
                );
        return result.AccessToken;
    }

//initialize the GraphServiceClient instance
var graphClient = new GraphServiceClient(
            "https://graph.microsoft.com/v1.0",
            new DelegateAuthenticationProvider(
                async (requestMessage) =>
                {
                    var token = await GetAccessTokenAsync();
                    requestMessage.Headers.Authorization = new AuthenticationHeaderValue("bearer", token);
                }));