asp.net-web-api - mvc - github asp net signalr



SignalR und OpenId Connect (1)

Wenn Sie JwtBearerAuthentication , können Sie OnMessageReceived , um das Token OnMessageReceived :

Events = new JwtBearerEvents()
{
   OnMessageReceived = async (ctx) =>
   {
        ctx.Token = ctx.Request.Query["<qs-name>"];
   }
}

Oder wenn Sie IdentityServerAuthentication , können Sie TokenRetriever (nicht getestet, sollte aber in etwa so aussehen):

   TokenRetriever = (ctx) =>
   {
        return ctx.Request.Query["<qs-name>"];
   }

Ich habe einen Server, der ASP.NET Core Web Api OpenIddict und OpenIddict als Autorisierungsframework verwendet. Jetzt habe ich einen SignalR Host hinzugefügt und möchte ihm eine Autorisierung hinzufügen.

Aus verschiedenen Quellen habe ich festgestellt, dass SignalR (JS Client) möchte, dass Sie das Zugriffs-Token in der Querystring oder per Cookie senden, da Websockets keine Header unterstützen.

Da die Authentifizierungs-Middleware den Querystring- oder Cookie-Container für einen Autorisierungseintrag nicht überprüft, muss ich einen solchen Provider / Retriever / Resolver implementieren, der diesen Wert selbst liest.

Ich habe eine Lösung für IdentityServer aber nichts über OpenIddict .

Wo / Wie implementiere ich einen solchen Token Resolver mit OpenIddict ?





openiddict