Microsoft Graph SDK v5 と Azure Identity のプロキシを構成する
初期化時に Graph API のトランスポートと ClientSecretCredential のトランスポートを構成し、API リクエストとトークン リクエストの両方に経路を確保します。
Graph API の呼び出しと ClientSecretCredential のトークン要求には、それぞれ別のトランスポート入口があります。Microsoft.Graph 5 と Azure.Identity では、クライアントを作成する前に両方を構成します。
var proxy = new System.Net.WebProxy(
"http://proxy.example.net:8080");
var tokenHandler = new System.Net.Http.HttpClientHandler
{
Proxy = proxy,
UseProxy = true
};
var credentialOptions = new Azure.Identity.ClientSecretCredentialOptions
{
Transport = new Azure.Core.Pipeline.HttpClientTransport(tokenHandler)
};
var credential = new Azure.Identity.ClientSecretCredential(
tenantId, clientId, clientSecret, credentialOptions);
var authProvider =
new Microsoft.Kiota.Authentication.Azure.AzureIdentityAuthenticationProvider(
credential, scopes: new[] { "https://graph.microsoft.com/.default" });
var graphHttp = Microsoft.Graph.GraphClientFactory.Create(proxy: proxy);
var graphClient = new Microsoft.Graph.GraphServiceClient(
graphHttp, authProvider);認証されていないパブリック HTTP ルートでは、HTTP プロキシ一覧が共有 WebProxy の候補アドレスを提供します。アプリケーションは既存の資格情報処理を通じて tenantId、clientId、clientSecret を渡します。.default スコープは、その登録に構成されたアプリケーションのアクセス許可を使用します。ルートがアクセス許可を付与することはできません。
両方のトランスポート行を重要なペアとして読んでください。HttpClientTransport(tokenHandler) は資格情報のトークン要求を運びます。GraphClientFactory.Create(proxy: proxy) は Graph SDK の HTTP ミドルウェアの構築を保ちながら、その API ルートを構成します。
中間プロキシが認証を必要とする場合は、必要なアカウントをプロキシ オブジェクトの Credentials に割り当てます。所有するトランスポートはコンポーネントの有効期間中保持し、シャットダウン時に破棄します。
このパターンは、示した SDK の世代で使用します。HttpProvider と DelegateAuthenticationProvider の例は以前の世代のものであり、このコンストラクター チェーンに混在させることはできません。