2015-05-04 30 views
4

我有一個非常基本的客戶機/服務器測試設置失敗與消息:NegotiateStream拒絕非本地管理員的客戶

服務器拒絕了客戶端證書。

除非客戶端作爲在服務器上具有管理權限的帳戶登錄。這是我不想要的。

這裏是我的客戶端代碼:

var formatter = new BinaryFormatter(); 

... 

using (var client = new TcpClient(ip, 1248)) 
using (var stream = client.GetStream()) 
using (var negStream = new NegotiateStream(stream, false)) 
{ 
    await negStream.AuthenticateAsClientAsync(CredentialCache.DefaultNetworkCredentials, string.Empty, ProtectionLevel.EncryptAndSign, TokenImpersonationLevel.Identification)); 
    formatter.Serialize(negStream, "This is a test!"); 
} 

這裏是我的服務器代碼:

var listener = new TcpListener.Create(1248); 
listener.Start(); 

var tcpClient = listener.AcceptTcpClient(); 
using (var stream = tcpClient.GetStream()) 
using (var negStream = new NegotiateStream(stream, false)) 
{ 
    await negStream.AuthenticateAsServerAsync(CredentialCache.DefaultNetworkCredentials, ProtectionLevel.EncryptAndSign, TokenImpersonationLevel.Identification)); 
    Console.WriteLine(formatter.Deserialize(negStream)); 
} 

如何配置服務器接受任何登錄的用戶?我需要看另一個設置嗎?是否有另一種使用域憑據對流進行身份驗證的方法?

+0

您是否檢查過服務器上的安全事件日誌?你正在運行哪個操作系統版本? –

+0

安全事件日誌沒有失敗。沒有什麼不尋常的。我在Server 2012 R2和Windows 7上運行。 –

+0

服務器和客戶端在哪個帳戶下運行? (Domain-Accounts,NetworkService,LocalUser)並嘗試在AuthenticateAsServer()和AuthenticateAsClient()之外使用簡單的重載。 –

回答

1

這聽起來很瘋狂,但你可以給它一個嘗試,它爲我工作反正

打開文件夾 - >查看選項卡 - >選項 - >查看選項卡 - >向下滾動,並取消選中「使用共享嚮導「

+0

據我所知這個答案值得一試。 – jlvaquero

+0

在我嘗試之前,賞金將結束,所以最好先給它,以免爲時已晚!這是希望! –

+0

謝謝:),希望它能正常工作...請讓我知道如果它dosen't –

相關問題