手動編碼的令牌傳遞不是很優雅。它污染你的方法簽名,並使你重複檢查遍佈整個地方。
如果您能夠向您的服務客戶端分發憑證,或者傳遞他們已經用於您系統的憑證,那麼我建議使用自定義用戶名&密碼驗證程序來使用郵件安全。
實施它的步驟are simple enough。你只需要實現一個UserNamePasswordValidator
:
從鏈接的文章很短的配置摘要:
指定安全模式在你的綁定:
<security mode="Message">
<message clientCredentialType="UserName"/>
</security>
在服務行爲添加:
<serviceCredentials>
<userNameAuthentication
userNamePasswordValidationMode="Custom"
customUserNamePasswordValidatorType="YourFullUserNameValidatorType"/>
</serviceCredentials>
然後客戶端只需要直接在服務代理上設置他們的憑證。所以他們沒有通過服務運營。
serviceClient.ClientCredentials.UserName.UserName = "username";
serviceClient.ClientCredentials.UserName.Password = "password";
你UserNamePasswordValidator
將獲得這些證書爲每個服務操作調用,你將不得不驗證它們對你的憑證存儲庫的機會。
但是,爲了更安全起見,您可以查看certificate authentication。這是更可靠的,你不需要從CA購買證書。如果您還可以在客戶端計算機上將自己設置爲CA,那麼您可以輕鬆前往。尤其是因爲你只有少數客戶,所以他們很容易管理。