WIF 4.5 BootstrapContext token de seguridad nulo

Estoy utilizando el nuevo material 4.5 WIF para autenticar a los usuarios del sitio web y para asegurar la comunicación entre mi sitio web de MVC y los servicios de WCF.

Tengo el sitio web configurado para guardar el contexto de arranque para poder reutilizar el mismo token de seguridad para todas las solicitudes a la capa de servicio.

En condiciones normales, todo funciona bien con cada solicitud de sitio web autenticada y SecurityToken disponible a través del contexto para proteger las llamadas de WCF.

Sin embargo, si el dominio de la aplicación de los sitios web se restablece (por ejemplo, la creación de la aplicación mientras se desarrolla), todas las solicitudes al sitio web aún se autenticarán, pero SecurityToken ya no está disponible en el contexto para pasar a las llamadas de WCF.

Depurando elBootstrapContext Tiene 4 propiedades útiles:

SecurityToken
SecutiryTokenHandler
Token
TokenBytes

El reinicio del dominio de la aplicación previa SecurityToken y SecurityTokenHandler tienen valores, y el token posterior al reinicio tiene un valor.

Observando el valor de Token después del reinicio, parece que este es el SAML XML sin formato, por lo que presumiblemente puedo rehidratar un SecutiryToken completo, pero parece un comportamiento extraño sobre el que no puedo encontrar ninguna documentación.

¿Alguna idea de lo que podría hacer para garantizar que SecurityToken esté siempre disponible para guardarme el error con el token XML?

Actualizar

Usando dotPeek para observar lo que está sucediendo en el código fuente del marco, pude ver la ruta de ejecución que genera este comportamiento, pero no pude determinar ninguna razón por la cual tenía que ser así y cómo podría ser un período.

Al final, dejé de intentarlo y ahora uso el siguiente fragmento de código para asegurarme de que tengo un token

if (context.SecurityToken != null)
{
    token = context.SecurityToken;
}
else if (context.Token.IsNotEmpty())
{
    var handlers = FederatedAuthentication.FederationConfiguration.IdentityConfiguration.SecurityTokenHandlers;
    token = handlers.ReadToken(new XmlTextReader(new StringReader(context.Token)));
}

Lo que ahora me preocupa es que me he perdido algún razonamiento detrás de este comportamiento y mi solución anterior va a estallar en algún momento.

Respuestas a la pregunta(3)

Su respuesta a la pregunta