2015-11-18 137 views
1

我是kerberos身份驗證的新成員,不知道任何事情。我準備好了服務器名稱,用戶名和密碼。Windows服務中的Kerberos身份驗證

我需要從獨立的Windows應用程序認證用戶。有人可以幫忙嗎?

我在Google上找不到太多幫助。

欣賞任何想法。

+0

不要使用Kerberos身份驗證,使用NTLM代替。 – Aron

+2

@Aron:有時候別無選擇。服務器不會爲我的客戶端程序而改變。 –

+0

如果您對/ Kerberos/NTLM不瞭解任何有關Windows的信息,那麼您不知道什麼是可能的。通常,Windows身份驗證實際上是SPEGNO協商,然後使用Kerberos或NTLM進行實際身份驗證。使用NTLM。 – Aron

回答

3

在Kerberos中,您不通過配對用戶名/密碼進行身份驗證,而是通過附加Kerberos令牌(可從CredentialsCache中獲取該令牌)。

WebRequest WReq = WebRequest.Create (MyURI); 
WReq.Credentials = CredentialCache.DefaultCredentials; 

見:https://msdn.microsoft.com/en-us/library/yk7437c8%28v=vs.110%29.aspx

第二行會給你NTLM或Kerberos憑據。你會得到Kerberos證書時:

  • 您的應用程序是由域用戶帳戶
  • SPN或UPN於Kerberos的KeyDistributionCentre
  • 服務器被配置在目前的服務器開始接受Kerberos標記,至少:你必須提供密碼。

當您執行'CredentialCache.DefaultCredentials'時,您的應用程序會使用基礎機制爲您生成SPNEGO令牌。在裏面,將是Keberos或NTLM票。下面是它如何工作的:環境

+0

謝謝造粒者。我其實需要獲取令牌並尋找C#示例。我不能有任何依賴IIS的順便說一句。你可以請我鏈接到一個例子,我無法找到一個谷歌。感謝你的幫助。 –

+1

例如:https://msdn.microsoft.com/en-us/library/yk7437c8%28v=vs.110%29.aspx。您的應用程序必須在域用戶帳戶上運行,因爲只有CredentialCache.DefaultCredentials纔會返回Kerberos憑據。 – greenmarker