In meinem Web-API-2-Projekt habe ich JWT-basierte Authentifizierung. Die Konfiguration istIAuthenticationFilter in SignalR 2.0
var config = new HttpConfiguration();
app.UseJwtBearerAuthentication(new JwtBearerAuthenticationOptions {/**/});
config.Filters.Add(new MyAuthenticationFilter());
app.UseWebApi(config);
app.UseCors(CorsOptions.AllowAll);
app.MapSignalR();
MyAuthenticationFilter
eine benutzerdefinierte Haupt baut auf der Grundlage einer eingehenden JWT und legt es auf eine Anfrage, so dass in meinem Controller-Aktionen ich es als this.User
zugreifen können. Alles funktioniert gut, außer der Filter für SignalR Anfragen ignoriert wird:
public class MyHub : Hub {
public override Task OnConnected() {
// here Context.User is ClaimsPrincipal which contain a JWT from Authorization header
// I expect it to be MyCustomPrincipal
return base.OnConnected();
}
}
Warum IAuthenticationFiltter
ignoriert wird? Wie repariere ich das?