2016-07-07 14 views
5

Ich stehe bei der Verwendung von Xamarin.Auth für die OAuth2-Authentifizierung vor einem Problem.Verwenden von Xamarin.Auth für die OAuth2-Authentifizierung - Benutzername und Passwort?

Von POSTMAN Anfrage für Token über GET-Methode zu meiner Backend URL Ich schicke: http://example.com/backend/oauth/token indem Header:

Authorization, xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Grund

und mit folgenden Parametern in URL:

client_id = backendKlient

scope = lesen

grant_type = Passwort

username = admin

Passwort = admin

so geht es so: http://example.com/backend/oauth/token?client_id=backendClient&scope=read&grant_type=password&username=admin&password=admin

es mir JSON gibt zurück , die wie folgt aussieht:

{ 
"access_token": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", 
"token_type": "bearer", 
"refresh_token": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", 
"expires_in": 9999, 
"scope": "read" 
} 

Ich wollte mein Back-End-Service, von der mobilen Anwendung (mit Xamarin.Forms app) authentifizieren, und ich habe versucht, Xamarin.Auth zu verwenden, um meine Back-End-Authentifizierung - https://developer.xamarin.com/guides/xamarin-forms/web-services/authentication/oauth/

Tat OAuth2Authenticator mit, es wenigstens in der Lage ist zu "ping" mein Backend (URL, indem sie, clientIde usw.), wie es zurückgibt:

<UnauthorizedException> 
    <error>unauthorized</error> 
    <error_description>Full authentication is required to access this resource</error_description> 
</UnauthorizedException> 

jedoch Nachricht, es wird in falscher Weise gesendet - zumindest ich denke schon, da es keine Autorisierung in Header + Ich habe keine Möglichkeit, Benutzername und Passwort in OAuth2Authenticator übergeben.

Hat jemand eine Idee, wie ich das machen kann? Oder sollte ich etwas anderes benutzen - nicht Xamarin.Auth?

Danke.

+0

Fügen Sie auch Beispiele zu Ihren OAuth2Authenticator-Aufrufen hinzu, da Sie fragen, was Sie falsch machen. Und Xamarin.Auth funktioniert bei mir für die Dropbox-Authentifizierung. Für Microsoft Live musste ich einige Änderungen vornehmen, da es eine leichte Abweichung in der Handhabung der Anfragen gibt, verglichen mit dem, was in Xamarin.Auth implementiert ist. Fügen Sie auch Informationen hinzu, welche Version von Xamarin.Auth Sie verwenden. – eX0du5

+0

Für mich ist es ruhig, einfach zu verstehen, was nach einigen Nachforschungen falsch sein könnte. Meine Back-End-OAuth2-Implementierung benötigt Header mit * Authorization * -Schlüssel und Hash-Wert. Das Problem ist, dass Xamarin.Auth Header nicht übergeben kann - https://github.com/xamarin/Xamarin.Auth/issues/61 Gibt es eine Problemumgehung? – Namek

+0

Welchen Zweig dieses Projekts benutzen Sie? Der veraltete Master-Zweig oder https://github.com/xamarin/Xamarin.Auth/tree/portable-bait-and-switch, der auch die Basis des Nuget-Pakets zu sein scheint (Version 1.5, wenn ich mich richtig erinnere). – eX0du5

Antwort

1

Hier ist, wie ich es tun (nicht mit Xamarin.Auth):

var client = new HttpClient(); 
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", tokenGoesHere); 

Dann können Sie Inhalte hinzufügen, die Sie mögen und Get/Post/PutAsync, was auch immer Sie brauchen.

Verwandte Themen