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