2012-01-26 63 views
0

我正在開發將進入一個WCF服務在ASP.NET的網站將被託管與數據層通信的同一IIS託管ASP.NET Web應用程序。身份驗證WCF服務從ASP.NET應用程序

ASP.NET網站通過認證與存儲在SQL數據庫的用戶名和密碼的用戶處理表單認證。

由於WCF服務託管在互聯網上,我想阻止對WCF服務的未經授權的訪問,即只有成功通過ASP.NET站點驗證的用戶纔可以訪問WCF服務。

如果未經授權的用戶訪問WCF服務一樣,直接 http://test.com/service/userservice.svc或嘗試添加服務引用

,它應該拋出異常。

如何才能實現這一目標?

回答

0

在生產中可能要完全關閉元數據交換(除非你的ASPNET代碼生成在飛行代理,我不認爲它會)。

您可以通過web.cong/app.config中進行以下設置您的服務 - 關閉元數據曝光 1. 2.刪除元數據終結

回來到您的第二question- 這取決於您在WCF服務中使用的是什麼綁定。如果您沒有公開或打算將您的服務暴露給外部世界,那麼通常會因爲其性能(您可以在IIS 7 +中託管基於tcp的服務)而使用網絡TCP綁定。

考慮到它是基於TCP的服務,您的端點不會以任何方式暴露在端口80上,因此您的服務不能直接由任何客戶端調用(假設您的公司的防火牆只允許在該IP上使用端口80)。您可以通過向其添加Windows身份驗證來進一步加強您的服務的安全性。

我已經做了一些假設,在這裏可以隨意恢復這一點。

HTH

+0

我想給更多的投入 - ASP.NET網站和WCF服務在同一IIS託管分開。 SSL證書已安裝在服務器中,因此通信將通過HTTPS進行。 ASP.NET網站適用於表單身份驗證。由於WCF服務已在IIS中提供且可在互聯網上使用,因此我們希望防止未經授權的用戶使用該服務。那麼,我們該如何防範呢?我們只想通過ASP.NET網站進行身份驗證的用戶訪問WCF服務。 – Anand