2016-07-22 12 views
4

Ich bin neu bei Azure AD und versuche, eine vom AD gesicherte API zu verwenden. Ich habe die API erfolgreich erstellt und gesichert, aber ich habe es in meiner Windows-Formular-App schwer in Anspruch genommen. Ich habe die Dokumentation zu Link, versucht aber eine Kompilierung Fehler in dieser ZeileAzure AD Erhalte Zugriffstoken aus dem Authentifizierungsergebnisobjekt

AuthenticationResult ar = 
ac.AcquireToken("https://cloudidentity.net/WindowsAzureADWebAPITest", 
"a4836f83-0f69-48ed-aa2b-88d0aed69652", 
new Uri("https://cloudidentity.net/myWebAPItestclient")); 

Es gibt keine solche Methode in der ADAL jetzt bekommen. Es gibt Asynchron-Version, die ich versuchte, nimmt aber verschiedene Parameter

AuthenticationResult ar = 
ac.AcquireTokenAsync("https://cloudidentity.net/WindowsAzureADWebAPITest", 
"a4836f83-0f69-48ed-aa2b-88d0aed69652", 
new Uri("https://cloudidentity.net/myWebAPItestclient"), IPlatformParameters); 

Zusammen mit anderen Informationen, es will auch IPlatformParameters Objekt, das ich keine Ahnung von habe. Ich habe versucht, null zu passieren und gehen Sie vor, aber dann gibt es Fehler in dieser Zeile

string authHeader = ar.CreateAuthorizationHeader(); 

Fehler ist, dass es in ADAL für ar Objekt keine solche Methode ist. Also sprang ich zu diesem tutorial, da er auch die Windows Forms App verwendete. Der Code, den er schreibt, ist

Task<AuthenticationResult> ar = authContext.AcquireTokenAsync("https://carsforher.onmicrosoft.com/SecuredCars_20160722021100", "2640aca3-a35e-42f8-8f6d-2e5fe1a09df4", new Uri("http://localhost"), null); 
     HttpClient client = new HttpClient(); 
     client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", ar.AccessToken)..... 

Aber es gibt keine Eigenschaft als AccessToken für das AR-Objekt. Dann habe ich versucht, Beispielanwendungen von herunterzuladen, aber sie haben auch den exakt gleichen Code geschrieben, der leider nicht funktioniert. Die Version von ADAL, die ich verwende, ist 3.12.0.827. Bitte helfen Sie mir herauszufinden, wie ich das Access Token bekommen und die API konsumieren kann.

Antwort

1

Sie mit dem AcquireTokenAsync falsch: AcquireTokenAsync gibt eine Aufgabe, kein AuthenticationResult Objekt und daher Methode ‚CreateAuthorizationHeader‘ und Eigentum ‚AccessToken‘ (nicht wirklich) „fehlt“.

Es wird eine feste Version des Codes sein:

AuthenticationResult ar = ac.AcquireTokenAsync("https://cloudidentity.net/WindowsAzureADWebAPITest", 
    "a4836f83-0f69-48ed-aa2b-88d0aed69652", 
    new Uri("https://cloudidentity.net/myWebAPItestclient"), IPlatformParameters).Result; 

string authHeader = ar.CreateAuthorizationHeader(); 
string accessToken = ar.AccessToken; 

oder alternativ so wirklich Code async laufen, Sie 'async' der Methode Signatur hinzufügen und tun:

AuthenticationResult ar = await ac.AcquireTokenAsync("https://cloudidentity.net/WindowsAzureADWebAPITest", 
    "a4836f83-0f69-48ed-aa2b-88d0aed69652", 
    new Uri("https://cloudidentity.net/myWebAPItestclient"), IPlatformParameters); 

string authHeader = ar.CreateAuthorizationHeader(); 
string accessToken = ar.AccessToken;