回答
編輯:這將阻止所有未經過身份驗證的用戶訪問您的服務。如果您需要域中未經過身份驗證的用戶訪問服務,請告訴我,我會相應更新。
您是否在ASP.NET應用程序中使用身份驗證?
<system.web>
...
<authentication mode="Forms">
<forms protection="All" defaultUrl="login.aspx" ... />
</authentication>
...
</system.web>
如果是這樣,您的.svc文件將無法訪問,直到您的用戶進行身份驗證。如果未經過身份驗證的用戶嘗試訪問.svc文件,他們將被重定向到您的登錄頁面。
EDIT(2): 既然你需要你的網站內的非認證接入服務,一兩件事你可以考慮的是具有真實在的首次訪問網站發送到用戶的機器上的cookie。該cookie可以使用創建日期和某個密鑰來創建散列,並且您可以驗證服務器上每個請求的散列。來自其他網站的請求不會傳遞cookie,並且您的服務會手動檢查該cookie是否存在 - 如果不存在,則拒絕該請求。
如果您的WCF服務啓用了ASP.NET兼容性(true)並且AspNetCompatibilityRequirementsMode
設置爲Allowed或Required,那麼您應該可以訪問HttpContext和Cookie。 Here關於ASP.NET兼容模式的更多信息。
這可能不是最合適的解決方案,因爲我不知道您的方案和要求。但希望這有助於。
如果您不希望向Internet公開服務,則不應將它們託管在公共服務器上。如果你真的需要這個,你應該首先開始尋找在網絡層面上確保你的服務的方式。例如,我猜ISA服務器應該能夠阻止對你的服務的請求。
你想要的是認證。限制基於域的訪問不是一種安全的身份驗證方式。
+1最簡單的方法。 – 2010-08-19 21:03:55
- 1. WCF REST服務:允許跨域訪問
- 2. 跨域使用jQuery訪問ashx服務
- 3. 訪問Web服務 - 跨域
- 4. 跨域調用WCF服務
- 5. Silverlight的WCF服務跨域問題
- 6. WCF數據服務跨域問題jquery
- 7. WCF跨域服務創建
- 8. 自我託管的WCF服務的跨域訪問?
- 9. WCF RESTful服務從網站客戶端腳本跨域訪問
- 10. 使用WCF服務跨域進行身份驗證的問題
- 11. 的XML Web服務跨域訪問
- 12. silverlight和wCF訪問的跨域問題
- 13. 防止直接訪問JSON Web服務
- 14. 防止訪問其他網絡服務
- 15. 防止本地訪問IIS服務器
- 16. 訪問wcf服務
- 17. 如何使web服務可用於nodejs中的跨域訪問?
- 18. 如何使Web服務可用於跨域訪問?
- 19. 使用JQuery訪問跨域數據服務/ API
- 20. WCF Web服務,跨域示例
- 21. WCF JavaScript代理跨域阻止訪問數據庫
- 22. 無法使用InfoPath訪問WCF服務
- 23. 使用powershell2訪問wcf web服務
- 24. 使用Java訪問WCF服務
- 25. 防止服務器跟蹤Greasemonkey,跨域表單提交
- 26. 如何防止跨站點訪問
- 27. 跨域JQuery Ajax使用BasicHttpbinding調用WCF服務
- 28. 使用WCF服務訪問承載WCF服務的Windows服務中的數據
- 29. 跨服務器訪問php
- 30. 防止WCF服務的AppDomain被卸載
Hi D. Hoerster。我確實需要域中的非認證用戶才能訪問這些服務。你能否提供一些關於這方面的見解?訪問服務的頁面與服務位於同一個域中。它只是訪問該頁面的用戶很可能不會被認證。 – user208662 2010-08-19 19:07:20
爲了確保我明白了,您希望啓用'http:// mysite.com/dashboard.aspx'來訪問'http:// mysite.com/myservice.svc'(即使對於未通過身份驗證的用戶),但你不希望'http:// someothersite.com/default.aspx'訪問'http:// mysite.com/myservice.svc'。那是對的嗎? – 2010-08-19 19:44:07