2013-06-25 67 views
1

我對WCF很陌生,但我已經非常徹底地搜索了這個主題,並沒有拿出令人滿意的答案,所以這裏是我的問題:從WCF服務中訪問ServiceSecurityContext.Current.PrimaryIdentity.Name

在我的WCF服務中,我需要訪問用戶的用戶名。從我讀過的所有內容中,我應該可以從ServiceSecurityContext.Current.PrimaryIdentity.Name中獲取它。但是,並非像我所希望的那樣返回Domain \ Username,而是始終返回NT AUTHORITY \ NETWORK SERVICE。如何獲取登錄到訪問我服務的計算機的個人的實際域和用戶名?

謝謝。

回答

1

你看過ServiceSecurityContext類嗎?

表示遠程方的安全上下文。在客戶端, 代表服務標識,在服務上代表 客戶端標識。

例如,

ServiceSecurityContext.Current.WindowsIdentity.Name 

...確保您的服務已設置爲通過Windows安全進行身份驗證。

0

要使用Windows憑據,請將clientCredentialType設置爲「Windows」。使用wsHttpBinding,或netTcpBinding如果它的局域網內

<bindings> 
    <netTcpBinding> 
    <binding name="WindowsCredentials"> 
     <security mode="Transport"> 
     <transport clientCredentialType="Windows" /> 
     </security> 
    </binding> 
    </netTcpBinding> 
</bindings> 
+0

Lingaraj - 嘗試你wssHttpBinding和netTcpBinding的建議。無論哪種方式,當我查看ServiceSecurityContext.Current.PrimaryIdentity.Name或ServiceSecurityContext.Current.WindowsIdentity.Name時,仍然獲得NT AUTHORITY \ NETWORK SERVICE。爲了澄清,我想要做的是讓每個人都可以訪問我的WCF服務,然後一旦用戶在服務中,找出用戶是否已通過身份驗證(Windows身份驗證)並返回用戶所屬的組。爲此,我需要訪問用戶的實際域和用戶名。 – dversch