我目前正在审查一个带有 wcf 服务的系统和一个使用 Windows Auth 通过 tcp 连接到它的客户端应用程序。
在某些操作中,需要将用户名存储在对象属性上,将其发送到服务并将其与从客户端传递的凭据进行比较。然后对该对象进行进一步处理。
客户最近发现,这并不总是按预期工作。我研究了这个问题,发现在某些情况下,客户端和服务器端使用了不同的用户名(大小写的用法不同)。
我已经安装了一个解决方法(显然在 string.Equals 中使用了 IgnoreCase 选项)但是我对真正的修复很感兴趣。
在客户端它使用 WindowsIdentity.Current.Name 作为字符串,在服务端它使用 ServiceSecurityContext.Current.WindowsIdentity.Name 作为字符串。
进行这种比较的正确方法是什么?