Ich möchte einen Benutzer von einer Clientanwendung aus authentifizieren, während ich die ASP.NET-Web-API verwende . Ich habe alle Videos auf der Website gesehen und auch diesen Forumsbeitrag gelesen .
Wenn Sie das [Authorize]
Attribut richtig setzen, wird ein 401 Unauthorized
Status zurückgegeben. Ich muss jedoch wissen, wie ein Benutzer sich bei der API anmelden kann.
Ich möchte der API Benutzeranmeldeinformationen aus einer Android-Anwendung bereitstellen, den Benutzer anmelden und dann alle nachfolgenden API-Aufrufe vorauthentifizieren lassen.
android
.net
authentication
asp.net-web-api
Mujtaba Hassan
quelle
quelle
Antworten:
Sie müssen zusammen mit der Anfrage ein gültiges Formularauthentifizierungs-Cookie senden. Dieses Cookie wird normalerweise vom Server bei der Authentifizierung (
LogOn
Aktion) durch Aufrufen der[FormsAuthentication.SetAuthCookie
Methode gesendet (siehe MSDN ).Der Client muss also zwei Schritte ausführen:
LogOn
Aktion, indem Sie den Benutzernamen und das Passwort senden. Diese Aktion ruft abwechselnd dieFormsAuthentication.SetAuthCookie
Methode auf (falls die Anmeldeinformationen gültig sind), die wiederum das Formularauthentifizierungscookie in der Antwort setzt.[Authorize]
geschützte Aktion, indem Sie das Formularauthentifizierungs-Cookie senden, das in der ersten Anforderung abgerufen wurde.Nehmen wir ein Beispiel. Angenommen, in Ihrer Webanwendung sind zwei API-Controller definiert:
Der erste, der für die Authentifizierung verantwortlich ist:
und die zweite enthält geschützte Aktionen, die nur autorisierte Benutzer sehen können:
Jetzt könnten wir eine Client-Anwendung schreiben, die diese API verwendet. Hier ist ein einfaches Anwendungsbeispiel für eine Konsole (stellen Sie sicher, dass Sie die Pakete
Microsoft.AspNet.WebApi.Client
undMicrosoft.Net.Http
NuGet installiert haben ):Und so sehen die 2 HTTP-Anforderungen auf dem Draht aus:
Authentifizierungsanforderung:
Authentifizierungsantwort:
Anfrage für geschützte Daten:
Antwort für geschützte Daten:
quelle
Ich nehme Android als Beispiel.
Achtung bitte: i.localhost kann nicht verwendet werden. Android-Gerät sieht localhost als selbst Host. ii.Wenn die Web-API in IIS bereitgestellt wird, muss die Formularauthentifizierung geöffnet werden.
quelle
Verwenden Sie diesen Code und greifen Sie auf die Datenbank zu
quelle