SignalR 永続的接続の認証と承認 (SignalR 1.x)Authentication and Authorization for SignalR Persistent Connections (SignalR 1.x)

によってPatrick FletcherTom FitzMackenby Patrick Fletcher, Tom FitzMacken

Note

この記事では、ASP.NET SignalR を指します。This article refers to ASP.NET SignalR. SignalR を使用して、Java、Node.js、またはサーバーレス シナリオでは、リアルタイムのシナリオを有効にする方法と思う場合を見てASP.NET Core SignalRします。If you're thinking about using SignalR to enable real-time scenarios with Java, Node.js, or in a serverless scenario, take a look at ASP.NET Core SignalR. 既に ASP.NET SignalR を使用した場合を見て、のバージョンの違いバージョンの違いと ASP.NET Core SignalR での機能強化を理解するページ。If you've already used ASP.NET SignalR, take a look at the version differences page to understand the differences in the versions and the improvements in ASP.NET Core SignalR. 最後に、Microsoft Azure でリアルタイム アプリを実行することがわかっている場合を見て、 Azure SignalR サービスなど、アプリを必要とすると、クラウド ベースのスケール アウトを提供します。Finally, if you know you'll be running your real-time apps in Microsoft Azure, take a look at the Azure SignalR Service, as it provides cloud-based scale-out once your apps need it.

このトピックでは、永続的な接続の承認を適用する方法を説明します。This topic describes how to enforce authorization on a persistent connection. SignalR アプリケーションへのセキュリティの統合の詳細については、次を参照してください。セキュリティの概要します。For general information about integrating security into a SignalR application, see Introduction to Security.

承認を適用します。Enforce authorization

使用する場合は、承認規則を適用する、 PersistentConnectionオーバーライドする必要があります、AuthorizeRequestメソッド。To enforce authorization rules when using a PersistentConnection you must override the AuthorizeRequest method. 使用することはできません、Authorize永続的な接続を持つ属性です。You cannot use the Authorize attribute with persistent connections. AuthorizeRequestメソッドは要求ごとに、要求された操作を実行するユーザーが許可されていることを確認する前に SignalR フレームワークによって呼び出されます。The AuthorizeRequest method is called by the SignalR Framework before every request to verify that the user is authorized to perform the requested action. AuthorizeRequestメソッドは、クライアントからは呼び出されません。 代わりに、アプリケーションの標準的な認証メカニズムを通じてユーザーを認証します。The AuthorizeRequest method is not called from the client; instead, you authenticate the user through your application's standard authentication mechanism.

次の例では、認証されたユーザーへの要求に制限する方法を示します。The example below shows how to limit requests to authenticated users.

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

AuthorizeRequest メソッドで、カスタマイズされた承認ロジックを追加することができます。次のように、ユーザーが特定のロールに属しているかどうかを確認しています。You can add any customized authorization logic in the AuthorizeRequest method; such as, checking whether a user belongs to a particular role.