我正在使用NegotiateStream來驗證客戶端/服務器應用程序。服務器端代碼看起來是這樣的:當域不可用時使用NegotiateStream
SecureStream = new NegotiateStream(Stream, true);
SecureStream.AuthenticateAsServer(
CredentialCache.DefaultNetworkCredentials,
ProtectionLevel.EncryptAndSign,
TokenImpersonationLevel.Identification);
if (!SecureStream.IsAuthenticated)
{
return false;
}
WindowsPrincipal principal = new WindowsPrincipal(
(WindowsIdentity)SecureStream.RemoteIdentity);
// ExpectedRoles is a string[] of possible roles
foreach (string role in ExpectedRoles)
{
if (principal.IsInRole(role))
return true;
}
的客戶端代碼看起來是這樣的:
SecureStream = new NegotiateStream(Stream, true);
SecureStream.AuthenticateAsClient();
if (!SecureStream.IsAuthenticated)
{
return false;
}
客戶端和服務器可以在同一個域的單獨的網絡段上運行。因此,如果他們位於與域控制器不同的部分,並且互聯網連接斷開,他們應該能夠以離線方式運行。問題是,一些域配置使用戶無法在域斷開連接模式下進行身份驗證(顯然將該功能關閉是一種安全措施)。
所以我想弄清楚一個身份驗證模型,該身份驗證模型將允許我在域不可用時將非域用戶認證爲回退位置。
不幸的是,我是一名程序員,而不是網絡專家,所以我不知道如何描述問題。但我的理解是,有一些設置會禁用您在此處描述的默認行爲(出於安全原因),並且某些網絡管理員將其保留爲禁用狀態(出於安全原因),但希望軟件繼續工作。我會提出一箇中等特區的建議,看看他們對此有何看法。但在網絡配置方面我沒有太多的發言權,除了提供建議之外。 – 2010-11-02 22:05:31
我認爲更糟糕的情況下中斷可能會在幾天的時間範圍內,但我不知道這是多麼普遍。一整天可能並不是聞所未聞的,其中涉及使用物理媒體複製數據。 – 2010-11-02 22:09:36