Skip to content

Conversation

@mtnadb
Copy link

@mtnadb mtnadb commented Jan 20, 2026

Token.IsValid compara DateTime.UtcNow con ValidFrom/ValidTo tal cual. Si las fechas deserializadas tienen un DateTimeKind distinto (por ejemplo Unspecified o Local) la comparación puede fallar en tiempo de ejecución aunque en el depurador parezca correcta. La solución es normalizar las fechas antes de comparar (convertirlas a UTC).

Qué cambia y por qué:
• Antes: comparación directa con ValidFrom/ValidTo podía fallar si esas fechas no estaban en UTC (p. ej. Kind = Unspecified o Local).
• Ahora: se usa ToUniversalTime() en ValidFrom y ValidTo para normalizar a UTC y comparar con DateTime.UtcNow. Esto evita discrepancias de zona horaria y hace la comprobación consistente tanto en ejecución como en depuración.

Verificación rápida:
• Añade temporalmente logs para imprimir ValidFrom, ValidFrom.Kind, ValidFrom.ToUniversalTime() y DateTime.UtcNow después de la autenticación para confirmar el comportamiento.

Updated IsValid property to convert timestamps to UTC for accurate comparison.
@mtnadb
Copy link
Author

mtnadb commented Jan 20, 2026

Se muestra el valor de cada campo para la comparación del IsValid de Token. Se ha aplicado la corrección propuesta en el PR por eso el valor de IsValid es true, sin embargo en la impresión de los valores hay cierta diferencia en milisegundos.

Si se quita el threshold de 1 segundo, la condición de IsValid mostrada al final de código en la imagen, da como resultado false.
Si se agrega el threshold de 1 segundo, la condición de IsValid mostrada al final de código en la imagen, da como resultado true.

test

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant