【发布时间】:2011-09-08 14:23:31
【问题描述】:
在阅读了大量有关验证用户的信息(在 SO 土地和互联网上)之后,很明显,验证用户的“最佳”方法(从而检测过期密码等)是调用 Win32 LogonUser(),而不是尝试在 .NET 中使用 PrincipalContext.ValidateCredentials。
但是,我并不完全清楚 LogonUser 实际做了什么 - 因此它带来了哪些开销? MSDN's not entirely clear on this,我最关心的部分就在最后,它说 LogonUser 调用了 NPLoginNotify(),它的作用并不完全清楚(除了准备登录脚本),也不知道调用结果会发生什么.
我最初担心 LogonUser 加载了用户的个人资料,但一些进一步的阅读已经把这种担忧作为一个非问题(除非我在这个问题上错了,但据我所知,LogonUser 从未加载过个人资料- 这必须通过不同的函数调用显式加载)。
上下文是一个需要针对 Active Directory 进行身份验证的 Intranet Web 应用程序,因此该应用程序将有许多登录和注销:最初可能不会那么多,但将来可能会大幅增加。似乎使用 LOGIN32_LOGIN_NETWORK 类型调用 LoginUser 然后立即丢弃它给我的令牌可能是最好的前进路线。
是否有任何我不知道的开销,或者我只是过度担心?
【问题讨论】:
标签: .net authentication active-directory