Ich verwende die JWT-Authentifizierung in meiner ASP.NET Core 2.0-Anwendung mit OpenIddict.So autorisieren Sie die SignalR Core Hub-Methode mit JWT
Ich folge Idee in this thread und Aufruf AuthorizeWithJWT
Methode nach SignalR Handshake. Aber jetzt weiß ich nicht, was ich in AuthorizeWithJWT
Methode einstellen soll, damit ich zum Beispiel [Authorize(Roles="Admin")]
verwenden kann.
Ich habe versucht, mit der Einstellung Kontext Benutzer, aber es ist nur lesbar:
public class BaseHub : Hub
{
public async Task AuthorizeWithJWT(string AccessToken)
{
//get user claims from AccesToken
this.Context.User = user; //error User is read only
}
}
Und Attribut genehmigen:
public class VarDesignImportHub : BaseHub
{
[Authorize(Roles = "Admin")]
public async Task Import(string ConnectionString)
{
}
}
Ja, das wäre ein gültiger Fall, aber wie in GitHub-Thread ([link1] (https://github.com/aspnet/SignalR/issues/888#issuecomment-330727192) erläutert, [link2] (https://github.com/aspnet/SignalR/issues/888#issuecomment-330721385)) mit diesem Ansatz bestehen einige Sicherheitsrisiken. Weil access_token in der Abfrage öffentlich ist (Sie können es protokollieren ...). Werde das tun, wenn kein anderer Ansatz möglich ist. – Makla
Aber einmal Zugriffstoken könnte es tun? @Pinpoint Was denkst du? – Makla
Das einzige "Risiko" besteht darin, dass das Zugriffstoken in die Protokolle eingeschlossen wird (was in der OAuth2-Trägerspezifikation klar erklärt wird). Um dies zu vermeiden, können Sie die Protokollierungsablaufverfolgungen einschließlich der Abfragezeichenfolge mithilfe der Filter-API deaktivieren. – Pinpoint