Udostępnij za pośrednictwem


Uwierzytelnianie i autoryzacja połączeń trwałych usługi SignalR (SignalR 1.x)

Autor: Patrick Fletcher, Tom FitzMacken

Ostrzeżenie

Ta dokumentacja nie jest przeznaczona dla najnowszej wersji usługi SignalR. Przyjrzyj się ASP.NET Core SignalR.

W tym temacie opisano sposób wymuszania autoryzacji na trwałym połączeniu. Aby uzyskać ogólne informacje na temat integrowania zabezpieczeń z aplikacją SignalR, zobacz Wprowadzenie do zabezpieczeń.

Wymuszanie autoryzacji

Aby wymusić reguły autoryzacji podczas korzystania z elementu PersistentConnection , należy zastąpić metodę AuthorizeRequest . Nie można użyć atrybutu Authorize z połączeniami trwałymi. Metoda jest wywoływana AuthorizeRequest przez platformę SignalR Framework przed każdym żądaniem w celu sprawdzenia, czy użytkownik ma autoryzację do wykonania żądanej akcji. Metoda AuthorizeRequest nie jest wywoływana z klienta. Zamiast tego uwierzytelniasz użytkownika za pośrednictwem standardowego mechanizmu uwierzytelniania aplikacji.

W poniższym przykładzie pokazano, jak ograniczyć żądania do uwierzytelnionych użytkowników.

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

W metodzie AuthorizeRequest można dodać dowolną niestandardową logikę autoryzacji; na przykład sprawdzenie, czy użytkownik należy do określonej roli.