0
OpenIddictでASP.NET Core 2.0アプリケーションでJWT認証を使用しています。JWTでSignalR Core Hubメソッドを承認する方法
私はthis threadのアイデアに従っており、SignalRハンドシェイク後にAuthorizeWithJWT
メソッドを呼び出しています。しかし今、AuthorizeWithJWT
の方法で何を設定すればいいのかわからないので、例えば[Authorize(Roles="Admin")]
を使うことができます。
私は、コンテキストのユーザーを設定してみましたが、それは読み取り専用です:
public class BaseHub : Hub
{
public async Task AuthorizeWithJWT(string AccessToken)
{
//get user claims from AccesToken
this.Context.User = user; //error User is read only
}
}
と属性を許可する使用して:
public class VarDesignImportHub : BaseHub
{
[Authorize(Roles = "Admin")]
public async Task Import(string ConnectionString)
{
}
}
はい、これは有効なケースですが、githubスレッド([link1](https://github.com/aspnet/SignalR/issues/888#issuecomment-330727192)、[link2](https: /github.com/aspnet/SignalR/issues/888#issuecomment-330721385))このアプローチではセキュリティ上のリスクがあります。クエリのaccess_tokenは公開されているため(ログに記録することができます)他のアプローチが可能でなければ、それを行います。 – Makla
しかし、一度のアクセストークンでそれを行うことはできますか? @Pinpointあなたはどう思いますか? – Makla
唯一の「危険」は、アクセストークンがログに含まれることです(これはOAuth2ベアラ仕様で明確に説明されています)。これを避けるには、フィルタリングAPIを使用してクエリ文字列を含むロギングトレースを無効にすることができます。 – Pinpoint