2011-03-09 75 views
0

編輯2011年9月3日多加一個相關的問題WCF服務授權通過用戶名和密碼

你好,

我很新的WCF和現在正在做一個速成班。

我可以請第二套眼睛檢查我的計劃嗎?

這裏是(計劃)細節:

的目標是做一個使用用戶名和密碼通過SSL在運輸過程中保護的憑證和信息內容授權的互聯網訪問的WCF服務。

一個WCF SOAP服務

  • 綁定:的wsHttpBinding
  • 驗證:UsernameAuthentication(自定義)
  • 安全模式:交通運輸

將這些物品優雅地生活在一起?我不確定是否需要將安全模式更改爲「TransportWithMessageCredential」。

一個相關的問題:我試圖獲取身份信息,類似於使用HttpContext.Current.User。這是我能做到的嗎?

IIdentity myIdentity = 
OperationContext.Current.ServiceSecurityContext.PrimaryIdentity; 

如果我需要更改我的綁定,授權或安全模式,請讓我知道。

非常感謝!

編輯 - 附加問題:首次構想時,計劃是讓消費者發送用戶名和密碼作爲消息的一部分。證書將由SSL保護。那麼在相應的服務方法的代碼中,我會評估它們是否有權訪問並停止它們。這似乎是實施授權的一種更簡單的方法,但是我需要了解哪些缺點?

回答

1

是的,這些設置應該沒問題 - wsHttpBinding支持帶有用戶名/密碼憑據的傳輸安全性。

至於身份:在服務端代碼,您可以檢查ServiceSecurityContext,找到來電者對身份:

ServiceSecurityContext secCtx = ServiceSecurityContext.Current; 
var identity = secCtx.PrimaryIdentity; 
+0

一個問題:我可以做UNAME和密碼身份驗證和轉關閉不使用傳輸安全,僅用於概念驗證/測試目的?我想使用Cassini來測試,而不是製作證書等來測試uname/password功能。謝謝! – 2011-03-09 17:18:30

+1

@ D-Sect:不,我不這麼認爲。由於您發送uname/pwd與消息一起,因此需要保證傳輸。 – 2011-03-09 17:23:15

+0

爲了澄清,這將僅用於開發目的。你是說如果我使用UsernameAuthentication,那麼沒有傳輸安全性,它將無法運行?另外 - 請參閱提問相關問題的編輯。謝謝! – 2011-03-09 17:36:42

相關問題