2017-05-08 8 views
0

Ich arbeite mit einem REST-Service, der in einer azure-Umgebung bereitgestellt wird. Ich möchte einige Integrationstests durchführen, indem ich verschiedene API-Funktionen von einer separaten (Konsolen-) Anwendung aus aufrufen. Die REST API verwendet jedoch eine Bearer-Token-Authentifizierung. Ich bin ein totaler Anfänger mit azurblauen Authentifizierungen, also weiß ich nicht einmal, ob es möglich sein sollte.Bearer-Token-Client-Seite generieren C#

Ich habe versucht, das Beispiel zu verwenden gefunden here aber noch kein Glück.

In jedem Fall habe ich zwei Anwendungen. Eine ist die Konsolenanwendung, die den Code ausführt, und die andere ist der Restdienst, für den ich das Bearer-Token verwenden muss, um auf die API-Aufrufe zuzugreifen. Ich werde sie die ConsoleApp und RestService nennen.

Der Code I ausgeführt ist, wie folgend:

HttpClient client = new HttpClient(); 
string tenantId = "<Azure tenant id>"; 
string tokenEndpoint = $"https://login.microsoftonline.com/{tenantId}/oauth2/token"; 
string resourceUrl = "<RestService app id url>"; 
string clientId = "<azure id of the ConsoleApp>"; 
string userName = "[email protected]"; 
string password = "somepassword"; 

string tokenEndpoint = $"https://login.microsoftonline.com/{tenantId}/oauth2/token"; 
var body = $"resource={resourceUrl}&client_id={clientId}&grant_type=password&username={userName}&password={password}"; 
var stringContent = new StringContent(body, Encoding.UTF8, "application/x-www-form-urlencoded"); 

var result=await client.PostAsync(tokenEndpoint, stringContent).ContinueWith<string>((response) => 
{ 
    return response.Result.Content.ReadAsStringAsync().Result; 
}); 

JObject jobject = JObject.Parse (result);

Die Json Nachricht mir zurück:

error: invalid_grant, error_description: AADSTS50105: The signed in user is not assigned to a role for the application "RestService azureid"

Was bedeutet das, und wie das, was getan werden muss, aus diesem einen Träger Token zu bekommen?

Antwort

1

Bitte zunächst prüfen, ob Sie die User assignment required der Konsolenanwendung aktiviert:

In Ihrem azurAnzeigenBlatt, klicken Enterprise applications, suchen Sie Ihre App in All applications Klinge, klicken Properties: enter image description here

Wenn diese Option aktiviert das, und Wenn Ihrem Konto in Ihrer App keine Zugriffsrolle zugewiesen wurde, erhalten Sie den Fehler. Bitte versuchen Sie es zu Zugriffsrolle in Ihrer Anwendung zuordnen:

In Ihrem azurAnzeigenBlatt, klicken Enterprise applications, Ihre Konsole app in All applications Klinge suchen, klicken Sie auf Users and groups, klicken Add User Schaltfläche, wählen Sie Ihr Konto und weisen Rolle (Benutzer bearbeiten und gewährleisten select role nicht None Selected) ist:

enter image description here

Bitte lassen sie mich wissen, ob es hilft.

+0

Die Konsolen-App hat die Benutzerzuordnung ausgeschaltet, der Dienst hat sie eingeschaltet. Ich werde sehen, ob ich etwas mit dieser Information tun kann – martijn

+0

Also fügte ich die Erlaubnis zum Service hinzu und das schaffte, mein Problem zu lösen. Danke vielmals! – martijn