簡體   English   中英

windows 域之外的應用服務器可以驗證該域的用戶嗎?

[英]Can an application server outside a windows domain verify a user of that domain?

我正在構建一個 Winform應用程序,其中包括一個使用 C# 的應用程序服務器 這是給我的一個公司客戶的,客戶有自己的 windows 域。

但是,應用服務器不會在他們的域中。 該應用程序將位於雲 VM中。

客戶(就像任何客戶一樣)希望為他們的用戶提供便利。 他們想使用用戶的 windows Id。 他們不希望他們的用戶必須再次登錄才能訪問我的應用程序。 只要用戶是windows 域組的一部分,他/她就應該有權訪問應用程序而無需輸入密碼。

我想知道這是否可以完成,因為我的 App Server不是他們域的一部分。

如果是這樣,怎么做?

當然,有幾個選擇。

  1. 聯合——使用聯合協議,如 SAML/WS-Fed,或類似的 OpenID Connect。 您的應用服務器接受來自基於內部用戶身份的身份提供者的令牌。 Active Directory 提供 ADFS 和 Azure AD。 還有其他很好的第三方服務可以做同樣的事情。

  2. Kerberos——使用像Kerberos.NET這樣的庫來接受 Kerberos 票證。 您需要在其域中為密鑰和 SPN 配置服務主體,然后將您的應用配置為使用密鑰接受票證。 您還可以使用內置 Windows 函數 SSPI,但這需要在域環境之外進行大量工作。

var authenticator = new KerberosAuthenticator(new KeyTable(File.ReadAllBytes("sample.keytab")));

var identity = authenticator.Authenticate("YIIHCAYGKwYBBQUCoIIG...");

Assert.IsNotNull(identity);

var groups = identity.Claims.Where(c => c.Type == ClaimTypes.GroupSid);

在 Kerberos(加入域的計算機之間的正常域身份驗證方法)不可用的情況下,NTLM 將用作后備。 參考:

http://msdn.microsoft.com/en-us/library/windows/desktop/aa378749(v=vs.85).aspx http://en.wikipedia.org/wiki/NTLM

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM