web-dev-qa-db-ja.com

C#でのグラフ呼び出しにMS SDKでauthProviderを使用する

グラフAPIに接続し、テナントからAzureADからユーザーのリストを取得するC#コンソールアプリケーションを作成しようとしています。私はアプリを登録し、管理者は私に以下を与えました

  • テナント名とテナントID
  • クライアントID(アプリIDとも呼ばれる)
  • クライアントシークレット

SDKを使用すると、使用する必要のあるC#コードは次のようになります( https://docs.Microsoft.com/en-us/graph/api/user-list?view=graph-rest-1.0&tabs=cs ):

GraphServiceClient graphClient = new GraphServiceClient( authProvider );

var users = await graphClient.Users
    .Request()
    .GetAsync();

ただし、コンソールアプリケーションはバッチプロセスとして実行されるため、ユーザーの操作はまったくありません。したがって、authProviderを提供するために、MS docsサイトでこの記事に従いました: https://docs.Microsoft.com/en-us/graph/sdks/choose-authentication-providers?tabs=CS

私の目的のために、「クライアント資格情報OAuthフロー」に移動する必要があると思います。そのURLに表示されるコードですが、ここにもあります。

IConfidentialClientApplication clientApplication = ClientCredentialProvider.CreateClientApplication(clientId, clientCredential);
ClientCredentialProvider authProvider = new ClientCredentialProvider(clientApplication);

問題は、Visual StudioがClientCredentialProviderクラスを認識しないことです。インポートするアセンブリがわかりません。上では以下の使い方を使っています。

using Microsoft.Identity.Client;
using Microsoft.IdentityModel.Clients;
using Microsoft.IdentityModel;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

私はGitHubリポジトリの経験があまりなく、Visual Studio 2015を使用しています。サンプルコードに興味があります。見ましたが見つかりません。 MSにはいくつかの講義がありますが、インタラクティブに認証している別のタイプの認証プロバイダーを使用していますが、これは私が探しているものではありません。 TenantId/ClientIdおよびClient Secretを使用してトークンを取得します。

4
gtrivedi

ユーザーを循環させたい場合は、var usersを次のコードに置き換えます。

IGraphServiceUsersCollectionPage users = graphServiceClient.Users.Request().GetAsync().Result;
foreach (User user in users)
{
Console.WriteLine("Found user: " + user.Id);
}
0
Marek Kyzivát