asp.net web api - tutorial - SignalR y OpenId Connect
signalr net core tutorial (1)
Si usa JwtBearerAuthentication
, puede usar OnMessageReceived
para establecer token:
Events = new JwtBearerEvents()
{
OnMessageReceived = async (ctx) =>
{
ctx.Token = ctx.Request.Query["<qs-name>"];
}
}
O si usa IdentityServerAuthentication
, puede usar TokenRetriever
(no probado, pero debería ser algo como esto):
TokenRetriever = (ctx) =>
{
return ctx.Request.Query["<qs-name>"];
}
Tengo un servidor que utiliza ASP.NET Core Web Api
y OpenIddict
como marco de autorización. Ahora agregué un host SignalR
y quiero agregarle una autorización.
De diferentes fuentes encontré que SignalR
(JS Client) desea que envíe el token de acceso en la cadena de consulta o por cookie, ya que los websockets no admiten encabezados.
Como el middleware de autenticación no comprueba el contenedor de la cadena de consulta o el contenedor de cookies para una entrada de autorización, necesito implementar dicho proveedor / recuperador / resolver, que lee este valor yo mismo.
Encontré una solución para IdentityServer
pero nada sobre OpenIddict
.
¿Dónde / Cómo implemento un sistema de resolución de tokens con OpenIddict
?