2011-08-11 52 views
0

你好老鄉的StackOverflow和編程愛好者。我有一個問題,我試圖將我創建的MVC網站移到測試服務器上,以便用戶可以開始測試......我遇到了一個我在開發網站時忽略的小問題。我的網站調用我寫了一個服務,它需要的服務的來電AD用戶名,並用它做一些後臺的工作......Windows身份驗證WCF和ASP.Net MVC2:讓用戶AD信息到WCF web服務

private string CallerNameOnly = string.Empty; 
    private string CallerFullDomain = string.Empty; 

    public ACOService() 
    { 
     this.CallerFullDomain = OperationContext.Current.ServiceSecurityContext.WindowsIdentity.Name.ToString(); 
     this.CallerNameOnly = this.CallerFullDomain.Substring(this.CallerFullDomain.IndexOf('\\') + 1); 
    } 

這個工作只是完美,當我我的本地機器和發展我用戶名被傳遞到服務中就好了......但是,當我部署到我正在使用的服務器時,我很難複製相同的功能...出於某種原因,當前用戶最終成爲我的計算機名稱。 .. 現在,我似乎已經分離出的問題,一種設置在IIS 7中,改變的時候,改變了我的網站的行爲有點...如果我去的應用程序池高級設置和更改過程模型/標識字段,從本地系統,到任何其他身份的它改變誰是用戶......我的遠程調試器ke pt竊聽我,所以我無法弄清楚用戶名是什麼,但你明白了嗎?
我的問題是,我怎麼使用我的網站(使用Windows身份驗證)來調用我的web服務,他用來訪問我的網站的用戶名的人的用戶名?我想到得到的用戶名和其直接傳遞到構造函數即...

public ACOService(string userID) 
    { 
     this.CallerNameOnly = userID;  
    } 

,但呈現的問題,因爲我已經在一個字符串的構造函數。我想我必須將構造函數放入我的合同中嗎?無論如何,這將如何在WCF中工作? 任何有關這個問題的幫助將不勝感激。

+0

您是否禁用IIS設置中的匿名訪問?當您不允許匿名訪問並且僅在IIS中使用Windows身份驗證時會發生什麼? – RoelF

+0

匿名訪問被拒絕。 – SoftwareSavant

+0

好的,你使用什麼樣的綁定WCF服務?你爲他們設置了任何身份驗證嗎? – RoelF

回答

1

您需要模擬服務上的客戶端。

http://msdn.microsoft.com/en-us/library/ms731090.aspx

+0

我已經模擬客戶端上的服務,並且我仍然收到一個錯誤,指出我的用戶沒有被我的web服務使用。通過Impersonate,我的意思是,當我設置我的客戶端時,我稱之爲模擬代碼,並且具有在我的服務合同的實現中設置模擬的那個屬性。 [OperationBehavior(Impersonation = ImpersonationOption.Required)] client.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Impersonation; 仍然沒有什麼工作... :-(幫助!!!! – SoftwareSavant

+0

你需要調用System.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principle.TokenImpersonationLevel.Impersonation每次你打電話的客戶端,或只是第一時間? – SoftwareSavant