У меня проблема, возникающая в одной производственной среде, которая сильно царапается.
У вас есть два пользователя, A и B. Пользователь A входит в систему, все работает нормально. Пользователь B входит в систему и после входа пользователя B пользователь A теперь имеет тот же маркер безопасности, что и пользователь B.
Наша настройка WIF довольно стандартная, мы добавляем некоторые пользовательские требования к токену, но все остальное выглядит стандартно, насколько маркер создается и хранится (обрабатывается WIF).
Почувствуйте, как я могу столкнуться с каким-то странным случаем с WIF, который я не знаком с
Обновление: оба A и B могут быть на отдельных машинах или отдельных браузерах на одном компьютере.
Где мы получаем токен при запросе службы
if (HttpContext.Current == null)
return null;
if (HttpContext.Current.Cache == null)
return null;
if (FederatedAuthentication.SessionAuthenticationModule == null)
return null;
if (FederatedAuthentication.SessionAuthenticationModule.ContextSessionSecurityToken == null)
return null;
var sessionToken = FederatedAuthentication.SessionAuthenticationModule.ContextSessionSecurityToken;
if (sessionToken.ClaimsPrincipal == null)
throw new InvalidOperationException("The ClaimsPrincipal property of the FederatedAuthentication.SessionAuthenticationModule.ContextSessionSecurityToken object is null");
if (sessionToken.ClaimsPrincipal.Identities == null)
throw new InvalidOperationException("The ClaimsPrincipal.Identities sub-property of the FederatedAuthentication.SessionAuthenticationModule.ContextSessionSecurityToken object is null");
if (sessionToken.ClaimsPrincipal.Identities.Count == 0)
throw new InvalidOperationException("The ClaimsPrincipal.Identities sub-property of the FederatedAuthentication.SessionAuthenticationModule.ContextSessionSecurityToken object has no identities");
if (sessionToken.ClaimsPrincipal.Identities[0] == null)
throw new InvalidOperationException("The first identity in the ClaimsPrincipal.Identities sub-property of the FederatedAuthentication.SessionAuthenticationModule.ContextSessionSecurityToken object is null");
if (sessionToken.ClaimsPrincipal.Identities[0].Claims == null)
throw new InvalidOperationException("The first identity in the ClaimsPrincipal.Identities sub-property of the FederatedAuthentication.SessionAuthenticationModule.ContextSessionSecurityToken object as a null Claims property");
return TokenUtility.GetDelegatedToken(IssuedTokenTypes.UserProfile | IssuedTokenTypes.AccountPermissions, sessionToken);
Если я добавлю здесь регистрацию, я вижу, что sessionToken.ClaimsPrincipal.Identity.Name
отличается от имени, которое предполагается в данный момент.