我有一個WCF服務,我嘗試設置一組憑據,以便它們不僅用於服務,還用於NAS上的所有後續操作。如何在WCF服務上要求模仿並從服務內設置憑證?
我目前已經在該方法上設置了屬性[OperationBehavior(Impersonation = ImpersonationOption.Required)]
,並在服務web.config中設置了<identity impersonate="true" userName="DOMAINUSER" password="PASSWORD"/>
。由於這是一項內部服務,我不想要消費者提供特殊憑據,所以我想使用<basicHttpBinding>
和<security mode="None">
。問題是,這樣設置的,當我收到錯誤:
The contract operation requires Windows identity for automatic impersonation.
A Windows identity that represents the caller is not provided by
binding 'BasicHttpBinding' for contract.
如上設置,返回WindowsIdentity.GetCurrent().Name
是NT AUTHORITY \ NETWORK SERVICE儘管具有模擬指令在web.config設置。它似乎希望從消費者/客戶端傳遞憑證,而不是從服務中設置。
是否有可能讓模擬完全包含在服務中,而不是依賴消費者發送憑證?
謝謝!
非常感謝您的確認。我懷疑這與我如何期待這種冒充行爲有關。是否可以創建/修改正在使用的WindowsIdentity,並在using()語句中使用它來執行應用程序的所需部分? – McArthey 2012-02-10 20:22:23