Authentifizierung und Autorisierung für permanente SignalR-Verbindungen (SignalR 1.x)

von Patrick Fletcher, Tom FitzMacken

Warnung

Diese Dokumentation gilt nicht für die neueste Version von SignalR. Sehen Sie sich ASP.NET Core SignalR an.

In diesem Thema wird beschrieben, wie Sie die Autorisierung für eine persistente Verbindung erzwingen. Allgemeine Informationen zur Integration von Sicherheit in eine SignalR-Anwendung finden Sie unter Einführung in die Sicherheit.

Erzwingen der Autorisierung

Um Autorisierungsregeln bei Verwendung einer PersistentConnection zu erzwingen, müssen Sie die AuthorizeRequest -Methode überschreiben. Sie können das Authorize Attribut nicht mit persistenten Verbindungen verwenden. Die AuthorizeRequest -Methode wird vom SignalR-Framework vor jeder Anforderung aufgerufen, um zu überprüfen, ob der Benutzer autorisiert ist, die angeforderte Aktion auszuführen. Die AuthorizeRequest Methode wird nicht vom Client aufgerufen. Stattdessen authentifizieren Sie den Benutzer über den Standardauthentifizierungsmechanismus Ihrer Anwendung.

Das folgende Beispiel zeigt, wie Anforderungen auf authentifizierte Benutzer beschränkt werden.

public class AuthenticatedConnection : PersistentConnection 
{ 
    protected override bool AuthorizeRequest(IRequest request) 
    { 
        return request.User.Identity.IsAuthenticated; 
    } 
}

Sie können eine beliebige benutzerdefinierte Autorisierungslogik in der AuthorizeRequest-Methode hinzufügen. z. B. überprüfen, ob ein Benutzer zu einer bestimmten Rolle gehört.