WEB-API - Autorisierung im controller oder einem action-level (keine Authentifizierung)
Ich habe eine vorhandene API, die Keine Authentifizierung hat. Es ist eine öffentliche Web-API, die mehrere Mandanten verwenden, indem einfach Anfragen.
Nun, es gibt die Notwendigkeit zum autorisieren des Zugriffs auf eine bestimmte Methode.
Gibt es eine Möglichkeit, dies zu tun, während der rest von den Controllern und den jeweiligen Methoden "öffnen" für die Kunden, die bereits mit diesem Web-API?
Wie kann ich erkennen, ob die Anfrage, die Berechtigungen zum Zugriff auf das "geschützt" - Methode?
Setzen Sie die
Und wo kann ich festlegen, wer Zugriff darauf hat? Die client-Anforderung hat, sich zu ändern? Nicht den Wunsch nehmen Sie einen großen Leistungseinbruch, da es zur Validierung der Zugang jedes mal, wenn eine Anfrage zu diesem spezifischen Methode?
[Authorize]
auf die spezifische Aktion, wenn es ist Teil des Controllers, der bereits hat anonymous Aktionen. Wenn das die einzige Aktion auf dem controller, Sie können es auf dem controller. Wie waren Sie der Planung über die Genehmigung von Anfragen für diese Aktion?Und wo kann ich festlegen, wer Zugriff darauf hat? Die client-Anforderung hat, sich zu ändern? Nicht den Wunsch nehmen Sie einen großen Leistungseinbruch, da es zur Validierung der Zugang jedes mal, wenn eine Anfrage zu diesem spezifischen Methode?
InformationsquelleAutor JCruz | 2016-08-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Was Sie tun müssen, ist fügen Sie ein
[Authorize]
- Attribut der Methoden, die Sie schützen möchten, ist Optional die Verwendung der überlast akzeptiert einen oder mehrere Namen, die Rolle der aufrufende Benutzer muss in.Dann, was Sie umsetzen müssen, ist ein Weg, um sicherzustellen, dass die Authentifizierung des Anrufers verwandelt sich in ein Principal-Objekt. Die Einstellung der AUFTRAGGEBER ist in der Regel etwas, was Sie nicht selbst tun, sondern stattdessen die Rahmenbedingungen für Sie tun.
Wenn Sie wollen, um Ihre eigene Schnittstelle, können Sie mithilfe eines Authentifizierungs-filter die Umsetzung der
System.Web.Http.Filters.IAuthenticationFilter
- Schnittstelle.So, was Sie bekommen ist diese:
Und implementieren Sie dann den
MyAuthentication
Attribut. Unten ist ein Beispiel, das wichtigste ist, dass Sie die Kontext-von der eingehenden Anfragen und am Ende die Einstellung dercontext.Principal
Eigenschaft mit einem neuen AUFTRAGGEBERIch hoffe, dies hilft Ihnen auf die richtige Spur. Für weitere Informationen überprüfen Sie diesen post:
http://www.asp.net/web-api/overview/security/authentication-filters
InformationsquelleAutor Robba
Können Sie
[Authorize]
- Attribut auf einen bestimmten API-Methode als auch auf controller-Ebene. Wenn Sie die[Authorize]
Attribut auf controller-Ebene können Sie dann[AllowAnonymous]
Attribut für diese API-Methode, die Sie möchten, um Zugriff ohne Authentifizierung.InformationsquelleAutor Rahul
Standardmäßig wird die Berechtigung Global deaktiviert auf Antrag. Sie können erzwingen, dass Sie Ihren controller, sodass nur autorisierte Anfragen durch das hinzufügen des action filter [Autorisieren].
Können Sie auch erzwingen, dass nur bestimmte Methoden zugelassen werden:
Oder einfach deaktivieren Sie die Berechtigung auf einige Methoden, die innerhalb einer Steuerung, die eine Autorisierung erfordert:
Können Sie auch festlegen, wer Zugriff auf Ihre Methode durch die Verwendung von:
Oder Regeln verwenden:
Oder sogar bauen eine komplexere Autorisieren Attribut wie in dieser Antwort (Ansprüche): Autorisierung Attribut von Forderungen
InformationsquelleAutor Rafael A. M. S.
Wir lösen es mithilfe von [AllowAnonymous] auf die Methode, die wir nicht wollten, das Authentifiziert werden soll, aber Authorizated, das überschreiben der Berechtigung.
InformationsquelleAutor Ruben Lopez