![](/img/trans.png)
[英]PrincipalContext.ValidateCredentials with cached credentials in C#
[英]Why is PrincipalContext.ValidateCredentials validating against old credentials?
我們有一個WCF服務,可根據計算機上的本地Windows帳戶驗證用戶的憑據,但是,無論何時創建新用戶或更改密碼,用戶都無法登錄,直到我重新啟動整個計算機。
我該怎么做才能告訴它對照當前用戶設置檢查憑據,而不使用舊的憑據?
using (var pContext = new PrincipalContext(ContextType.Machine))
{
if (pContext.ValidateCredentials(username, password))
{
using (var context = new LHREntities(Connections.GetConnectionString()))
{
// Do work
}
}
}
我正在使用.Net Framework 4.0和Windows Server2003。如果我在計算機上的Visual Studio中運行所有程序,則一切正常,並且可以根據當前設置正確檢查憑據,但是一旦將其部署到生產計算機上的IIS,它就會出現根據緩存的憑證進行驗證。
我不知道問題到底出在哪里,但是我確實找到了解決問題的解決方案。
同時運行WCF服務和Silverlight應用程序的AppPool使用NETWORK SERVICE
作為登錄標識。 我將其切換為管理登錄名,現在它可以根據當前用戶帳戶正確驗證登錄名,新用戶帳戶和密碼更改將立即生效。
如果有人可以解釋為什么這是他們自己的答案,那么我很樂意接受。
此代碼作為本地系統用戶創建的異常而啟動
using (var p = new PrincipalContext(firstUser))
{
p.ValidateCredentials(secondUser);
}
Msdn說:“ ValidateCredentials方法綁定到構造函數中指定的服務器”
我認為本地系統憑證存在問題。 在這種情況下,下一個代碼可以正常工作:
using (var p = new PrincipalContext(secondUser))
{
p.ValidateCredentials(null, null);
}
(對不起我的英語不好)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.