我有一個WCF服務,我想使用消息簽名,但僅限於某些調用 - 其他應該不被簽名。我無法弄清楚如何設置它來支持兩者。在使用傳輸安全性時爲多個消息ProtectionLevels配置服務
郵件簽名使用非Windows用戶名和密碼,通過服務端的usernamepasswordvalidator進行驗證。簽名和未簽名的消息都應使用傳輸安全性。
這裏是我的界面的例子:
[ServiceContract(ProtectionLevel=ProtectionLevel.None)]
public interface ISecTest
{
[OperationContract(ProtectionLevel = ProtectionLevel.Sign)]
string GetData(string value);
[OperationContract(ProtectionLevel = ProtectionLevel.None)]
string GetStuff(string stuff);
}
我遇到的問題是,簽約似乎是對服務的綁定配置完全根據,而不是在接口上定義的ProtectionLevels 。
如果我用下面的綁定,都通話需要的用戶名憑據,而不管的ProtectionLevel屬性:
<wsHttpBinding>
<binding name="secureWSHttpBindingConfig">
<security mode="TransportWithMessageCredential">
<message clientCredentialType="UserName" />
<transport clientCredentialType="None" />
</security>
</binding>
</wsHttpBinding>
如果我省略了消息的安全性和使用下面的綁定,然後既不呼叫需要憑據:
<wsHttpBinding>
<binding name="tolerantWSHttpBindingConfig">
<security mode="Transport">
<transport clientCredentialType="None" />
</security>
</binding>
</wsHttpBinding>
這是一個使用傳輸安全除messa之外的複雜ge安全? 有關如何在單個服務中完成此任務的任何建議(如果甚至可能的話)?
謝謝!
出於好奇,爲什麼要降級保護級別? –
我寧願不要,但我實際上是在混合前後登錄調用的舊服務的約束下工作的。 – Landstander