Graph-API-Aufrufe und Tokenanfragen von ClientSecretCredential haben getrennte Einstiegspunkte für den Transport. Mit Microsoft.Graph 5 und Azure.Identity konfigurieren Sie beide, bevor der Client erstellt wird:

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);

Für eine nicht authentifizierte öffentliche HTTP-Route stellt die HTTP-Proxy-Liste Kandidatenadressen für den gemeinsamen WebProxy bereit. Die Anwendung liefert tenantId, clientId und clientSecret über ihre bestehende Verwaltung der Anmeldeinformationen. Der Bereich .default verwendet die für diese Registrierung konfigurierten Anwendungsberechtigungen; eine Route kann keine Berechtigungen erteilen.

Lesen Sie die beiden Transportzeilen als das entscheidende Paar. HttpClientTransport(tokenHandler) überträgt die Tokenanfrage der Anmeldeinformationen. GraphClientFactory.Create(proxy: proxy) behält den Aufbau der HTTP-Middleware des Graph SDK bei und konfiguriert gleichzeitig dessen API-Route.

Wenn der Vermittler eine Authentifizierung verlangt, weisen Sie das erforderliche Konto der Eigenschaft Credentials des Proxy-Objekts zu. Behalten Sie eigene Transporte für die Lebensdauer der Komponente und geben Sie sie beim Herunterfahren frei.

Verwenden Sie dieses Muster mit der genannten SDK-Generation. Beispiele mit HttpProvider und DelegateAuthenticationProvider gehören zu einer früheren Generation und können nicht in diese Konstruktorkette eingemischt werden.

Ähnliche Artikel