我正在覆盖 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”变量中获取旧用户名。上面的代码,它会弄乱我们的身份验证(因为她的旧用户名不再在我们的数据库中)。
另一条信息:这只发生在她连接到Production服务器上的服务器代码时。我们在QA服务器上运行相同的服务器代码,不有此问题(QA服务器代码获取正确的(新的)用户名)
任何想法可能会发生什么?
编辑:他们重新启动了Prod服务器并解决了问题。仍然想知道可能发生的事情以及它是否会再次发生......