Я переопределяю System.IdentityModel.Policy.IAuthorizationPolicy.Evaluate следующим образом:
public bool Evaluate(EvaluationContext evaluationContext,ref object state)
{
var ids = (IList<IIdentity>)evaluationContext.Properties["Identities"];
var userName = ids[0].Name;
// look up "userName" in a database to check for app. permissions
}
Недавно один из пользователей изменил свое имя пользователя в Active Directory. Она в состоянии войти в свою Windows-систему нормально с ее новым именем пользователя, но когда она пытается запустить клиентскую часть нашего приложения, сервер получает свое старое имя пользователя в переменной "userName" приведенный выше код, который портит нашу аутентификацию (поскольку ее старое имя пользователя больше не находится в нашей базе данных).
Другая часть информации: это происходит только тогда, когда она подключается к коду сервера на производственном сервере. У нас на сервере QA работает один и тот же код сервера, и у нет этой проблемы (код сервера QA получает свое правильное (новое) имя пользователя)
Есть идеи, что может происходить?
Редактировать: Они перезагрузили сервер Prod, и проблема была решена. Все еще хотел бы знать, что, возможно, происходило и могло ли это повториться ...