Uwierzytelnianie i autoryzacja połączeń trwałych usługi SignalR

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ń.

Wersje oprogramowania używane w tym temacie

Poprzednie wersje tego tematu

Aby uzyskać informacje o wcześniejszych wersjach usługi SignalR, zobacz SignalR Older Versions (Starsze wersje usługi SignalR).

Pytania i komentarze

Prześlij opinię na temat tego, jak podoba ci się ten samouczek i co możemy poprawić w komentarzach w dolnej części strony. Jeśli masz pytania, które nie są bezpośrednio związane z samouczkiem, możesz opublikować je na forum ASP.NET SignalR lub StackOverflow.com.

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.