2012-01-13 61 views
0

首先感謝我的英語,它不是我的母語。我會盡我所能地描述我的問題。無證書,https,ssl和iis的wcf中的自定義身份驗證

我在互聯網上搜索了很長時間,在這裏我可以創建一個wcf服務,可以使用用戶名和密碼響應客戶端的請求,但不需要創建證書,使用https或其他任何需要我的Windows服務將安裝在機器上的特殊配置。

這是我的觀點:我想爲我的許多客戶部署一個應用程序。這個應用程序將有移動設備和一個服務器,它將在wcf的幫助下向移動設備提供一些信息。每個客戶將有一臺服務器和許多設備。我不希望網絡上的任何人都能訪問這些信息,因此,我必須爲每個請求實施一個包含用戶名和密碼的身份驗證程序,但我不希望被迫安裝證書,激活一些當我出售我的應用程序的新副本時,每臺機器上的https端口。

我讀過wcf 4.0,有一個內置的系統,可以加密數據,因此,我不希望實施任何其他的開銷,如果可能的話。

我的問題是:考慮到我的要求,是否可以有一個安全的解決方案,如果是的話,我該怎麼做?

如果我真的必須創建一個證書並使用IIS,https或任何其他安全解決方案,那麼可以在一個包中自動執行這些操作,這些包將安裝在我的客戶的每臺服務器機器上的一次單擊向導中?

預先感謝您的時間。

回答

1

默認情況下,WCF不允許通過http傳輸用戶名憑證,因此必須使用證書來保護傳輸層。但是,如果您確定自己可以通過http通道發送用戶名憑證,那麼您可以看看ClearUsernameBinding,它可以靈活地通過http通道發送用戶名憑據(考慮到有人可以攔截您的傳輸通道以獲取訪問憑據)

另外,如果您想使用必須安裝的證書,您可以實現在c#中編寫一些代碼,並將其作爲您的安裝包的一部分。你也可以像MSI一樣配置一切,比如創建虛擬目錄,部署應用程序等等。

+0

您可以將傳輸方式更改爲不需要安全性,因爲.net 3.5會在http頭中發送用戶名和密碼。 – 2012-01-15 18:59:54

0

你可能正在尋找的是具有消息級安全性的wcf綁定之一。您可以將用戶名和密碼放入此消息中,而不用擔心它們通過未加密的http線(即自定義身份驗證)。 WCF默認的發送用戶名和密碼作爲頭中http請求的一部分,這就是爲什麼它需要https。