Ich habe ein benutzerdefiniertes Attribut Autorize basierend auf AAD-Gruppen in MVC erstellt. Wenn ich im Attribut false zurückgebe, gehen die Anwendungen auf der Anmeldeseite in eine Endlosschleife. Wie unterschreiben Sie den Benutzer von einem benutzerdefinierten Autorisierungsattribut, wenn Sie adal in einer MVC-Anwendung verwenden?AuthorizeAttribute Adal Signout MVC
Antwort
Wenn der Benutzer authentifiziert ist, aber nicht über die Rolle (falsch in benutzerdefinierten Attribut zurückgegeben) das Autorisieren Attribut wird die Antwort auf 401. Es ist nur dann ändern, wenn der Benutzer authentifiziert und haben die Rolle (true zurück im benutzerdefinierten Attribut), dass das authorize-Attribut die Antwort nicht ändert.
Wenn Sie FormsAuthentication oder die OWIN Cookie Authentication Middleware verwenden und der Benutzer bereits angemeldet ist, wird er auf die Anmeldeseite weitergeleitet, was ziemlich merkwürdig ist, wenn Sie etwas dagegen haben. "Ich habe mich bereits eingeloggt, und jetzt bin ich wieder bei der Login-Seite, nur weil ich auf einen Link geklickt habe, und niemand hat mir gesagt, warum das gerade passiert ist."
AuthorizeAttribute stellt eine geschützte virtuelle Methode mit dem Namen HandleUnauthorizedRequest bereit, die überschrieben werden kann. Dabei wird überprüft, ob der Benutzer authentifiziert ist und eine Fehlerseite angezeigt wird. Zum Beispiel:
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
if (filterContext.HttpContext.User.Identity.IsAuthenticated)
{
filterContext.Result = new HttpStatusCodeResult(HttpStatusCode.Forbidden);
}
else
{
base.HandleUnauthorizedRequest(filterContext);
}
}
Sie könnten auch einen nicht autorisierten Benutzer in Ihrem benutzerdefiniert AuthorisationAttribute durch Überschreiben der HandleUnauthorizedRequest Methode umleiten:
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
filterContext.Result = new RedirectToRouteResult(
new RouteValueDictionary(
new
{
controller = "Error",
action = "Unauthorised"
})
);
}
Bitte lesen Sie here für weitere Details.
Das ist der Weg zu gehen! Das ist eine viel bessere Lösung. Vielen Dank! –
I think I found a solution I am testing as we speak:
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
var authorized = base.AuthorizeCore(httpContext);
var allowedGroups = GetAllowedGroups();
var urlHelper = new UrlHelper(HttpContext.Current.Request.RequestContext);
string callbackUrl = urlHelper.Action("SignOutCallback", "Account", routeValues: null, protocol: httpContext.Request.Url.Scheme);
httpContext.GetOwinContext().Authentication.SignOut(
new AuthenticationProperties { RedirectUri = callbackUrl },
OpenIdConnectAuthenticationDefaults.AuthenticationType, CookieAuthenticationDefaults.AuthenticationType);
return authorized;
}
- 1. ASP.Net MVC Security AuthorizeAttribute
- 2. ADAL Azure Active Directory SignOut Redirect URL funktioniert nicht mehr
- 3. MVC 4 überschreiben AuthorizeAttribute funktioniert nicht
- 4. Überschreiben von AuthorizeAttribute in MVC 4
- 5. Google API SignOut Problem
- 6. Firebase signout nicht
- 7. Umleitung, wenn signout Schienen
- 8. CAS Einzel SignOut nicht
- 9. Benutzerdefiniertes AuthorizeAttribute, das nicht von MVC Framework aufgerufen wird
- 10. Wie Verwenden von Enum in AuthorizeAttribute der Rasierer-MVC?
- 11. MVC: Erstellen eines benutzerdefinierten [AuthorizeAttribute], das Parameter akzeptiert?
- 12. ASP.NET MVC AuthorizeAttribute Übergabe von Werten an ActionMethod?
- 13. Werden alle eingehenden Anforderungen von AuthorizeAttribute in ASP.NET MVC behandelt?
- 14. MVC 5 Windows-Authentifizierung in AuthorizeAttribute und Service-Schicht
- 15. Adal & Adal-Angular - Refresh Token Endlosschleife
- 16. AuthorizeAttribute nur einmal aufgerufen
- 17. OWIN SignOut entfernt kein Cookie
- 18. Firebase Auth SignOut Fehler - Swift
- 19. ADAL JavaScript-Unterstützung für on-premise ADFS (ADAL JS)
- 20. ASP.NET Access Controller-Eigenschaften von AuthorizeAttribute-Methode
- 21. Unterschied zwischen AuthorizeAttribute und IAuthenticationFilter
- 22. Benutzerdefinierte AuthorizeAttribute funktioniert nicht richtig
- 23. Azure Adal mit Dropwizard
- 24. ADAL-Authentifizierung ohne Dialogfeldaufforderung
- 25. ADAL .NET zu ADFS
- 26. WPF ADAL AcquireTokenAsync
- 27. ADAL 3.13 - Graph API
- 28. Attribut vererbt von AuthorizeAttribute funktioniert nicht
- 29. Google+ signout-Methode gibt nullpointer-Ausnahme zurück
- 30. Google api auth2 signOut funktioniert nicht
Ich denke, Sie mischen Bedenken ein bisschen dort. Ein Autorisierungsattribut soll prüfen, ob der Benutzer berechtigt ist, eine Aktion auszuführen, und sie entweder zulassen oder eine Art von Fehler zurückgeben, der ihnen nicht erlaubt ist. Warum müssen Sie sie abmelden? – juunas
Danke für Ihre Antwort. Wenn der Benutzer kein Mitglied einer bestimmten AAD-Gruppe ist, gebe ich false zurück, weil ich den Benutzer nicht autorisieren möchte. Wenn Sie ADAL/OWIN als Authentifizierung verwenden und false von einem benutzerdefinierten Autorisierungsattribut zurückgeben, startet die Anwendung eine Endlosschleife in Richtung Ihrer Anmeldeseite und Ihrer Anwendung. –
Ja, in der Regel möchten Sie nicht eine Autoradierungsumleitung auf AAD verursachen (es wird eine Partie Tennis mit Ihrem Browser als Ball und Ihre App und AAD als Schläger starten). Stattdessen sollten Sie dem Benutzer eine Fehlerseite anzeigen. – juunas