Boilerplate: a sign-out is skipped after a sign-in whose push subscription got a 429 (AppClientCoordinator)
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 76/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- csharp, wasm
- Área
- authentication, backend
Línea de trabajo
Empieza por AppClientCoordinator.PropagateAuthState en la plantilla Boilerplate y sigue cómo se actualiza lastPropagatedUser cuando la suscripción push devuelve 429. Comprueba las pruebas de propagación del estado de autenticación, si las hay, y añade cobertura para cerrar sesión después de esa devolución anticipada. Se considera terminado cuando cerrar sesión actualiza el estado de autenticación de SignalR y la telemetría del usuario, y se vuelve a intentar la suscripción push para el estado anónimo.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Describe the bug
In the Boilerplate template (10.7.0, still the same on develop), AppClientCoordinator.PropagateAuthState returns early when the push subscription gets a 429, without setting lastPropagatedUser:
if (await pushSubscription is false)
return;
lastPropagatedUser = user;
lastPropagatedUser is then still the user propagated before this one. When that was the anonymous user, the next sign-out is skipped entirely:
- The app starts signed out.
lastPropagatedUseris the anonymous principal. - The user signs in.
PushNotificationControlleris rate limited (EnableRateLimiting(PUSH_NOTIFICATION)), soSubscribecan answer 429.SubscribeToPushNotificationsreturnsfalseandPropagateAuthStatereturns.lastPropagatedUserstays anonymous;finallyclearspropagatingUser. - The user signs out before any other authentication state change. The new state is
IAuthTokenProvider.Anonymous(), anduser.IsTheSame(propagatingUser ?? lastPropagatedUser)compares two anonymous principals with no claims, whichIsTheSamereports as the same.PropagateAuthStatereturns before doing anything.
Result after the sign-out:
- the SignalR connection is never told (
ChangeAuthenticationStateisn't invoked), so on the server it stays the signed-out user's connection and can keep receiving messages meant for that user; TelemetryContext.UserId/UserSessionId(and App Insights' authenticated user context) keep the signed-out user;- the push subscription isn't re-subscribed for the anonymous state.
Expected behavior
A sign-out always propagates, even when the sign-in before it stopped early on a 429.
Suggested fix
Forget the last propagated user when stopping early, so the next state propagates whatever it compares to. This keeps the intended retry (the same signed-in user propagates again on the next state change):
if (await pushSubscription is false)
{
lastPropagatedUser = null;
return;
}
Version
Bit.Boilerplate 10.7.0; the same code is on develop today.
- Lenguaje dominante
- C#
- Estrellas
- 1.4k
- Forks
- 264
- Merge medio
- 10 h 31 min
- PR fusionados (30 d)
- 405
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de bitfoundation/bitplatform
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
bitfoundation/bitplatform#14070 ·
Los mantenedores suelen responder en 1 día
-
Add end-to-end tests that the lazy-loadable utility libraries work in a published, trimmed WebAssembly appPosiblemente ocupada @msynk la tomó hoy. Abiertoarea / infra
bitfoundation/bitplatform#14427 · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
Fix security issues in bit BrouterPosiblemente ocupada @yasmoradi la tomó hoy. Abierto
Dificultad 4/5 1-2 días Aptitud para principiantes 15/100
bitfoundation/bitplatform#14404 ·
Los mantenedores suelen responder en 1 día
-
Fix security issues in bit BswupPosiblemente ocupada @yasmoradi la tomó hoy. Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 15/100
bitfoundation/bitplatform#14403 ·
Los mantenedores suelen responder en 1 día
-
Fix security issues in bit ButilPosiblemente ocupada @yasmoradi la tomó hoy. Abierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 1/100
bitfoundation/bitplatform#14402 ·
Los mantenedores suelen responder en 1 día
Todos los issues de bitfoundation/bitplatform
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
-
area: core priority: low type: bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
RicoSuter/Namotion.Interceptor#863 ·
Los mantenedores suelen responder en 1 día
-
area-cli
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
0.3.0
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
Los mantenedores suelen responder en 2 días