2011-05-02 85 views
0

我有一個WCF Web服務需要由Coldfusion應用程序使用。 這不是真正的問題。問題是該服務在特定用戶的IIS下運行。我如何知道目標應用程序何時調用特定應用程序調用該服務的服務,而不是一個幽靈應用程序。CF應用程序消耗的WCF

例如:

應用程序x正在調用服務y,它應該沒問題。 也應用程序z正在調用服務y,它不應該被允許這樣做。

+0

GxG,你解決了這個問題嗎?我也想知道。 – user460114 2012-02-26 23:54:13

回答

0

這聽起來像你需要建立某種形式的認證,爲您的WCF服務:

Security Messages Using Message Security

總之它的長,你會授權的應用提供一個令牌或用戶名/密碼然後他們會將這些信息與他們的請求一起傳遞給您。然後您可以驗證呼叫應用程序是否有權使用您的服務。

+0

當在coldfusion部分上調用wcf服務時,會有一個命令cfinvoke,它將參數用戶名和密碼......但是如何在另一端讀取它們?威盛IIS或應用程序本身? – GxG 2011-05-02 13:33:42

+0

@GxG,您需要確定ColdFusion客戶端是否能夠與WS- * soap標準進行互操作。如果可以,那麼這個答案將起作用。否則,它可能僅支持WS-I Basic配置文件。在這種情況下,您需要配置WCF服務以使用basicHttpBinding實現基本身份驗證。看到這個問題和答案:http://stackoverflow.com/questions/2904883/how-can-i-use-wcf-with-only-basichttpbinding-ssl-and-basic-authentication-in-iis – 2011-05-02 13:49:28

+0

@Sixto Saez:試過,但問題是我需要此服務在特定用戶下運行,所以基本身份驗證不是完全的答案,或者我做錯了這兩種方式...我需要從Coldfusion應用程序驗證呼叫。 Coldfusion發送憑證,但我收到匿名... – GxG 2011-05-02 14:38:42

0

如果您在談論WCF服務的安全性,那麼答案就是應用安全層。例如,您可以執行基本安全性,其中每個授權應用程序使用用戶名和密碼來訪問該服務。但是,如果您需要Active Directory身份驗證等功能,則需要使用更復雜的身份驗證設置。一種方法是使用WIF(http://msdn.microsoft.com/en-us/magazine/ee335707.aspx)。在那裏有一些很好的例子可以實現如何實現更安全的WCF應用程序。

1

根據@Justin的回答中的評論,似乎CF客戶端只能支持WS-I Basic Profile。這使用內置的HTTP基本認證機制。 Here is an article,它解釋瞭如何爲這種認證模式配置WCF服務。

This article explains how you need to configure IIS實際上支持HTTP基本身份驗證。如果您將IIS主機設置爲具有與提交到服務的用戶名和密碼相匹配的本地計算機(首選)或域Windows帳戶,則可以跳過創建自定義身份驗證器。否則,您編寫的自定義驗證器將確定誰有權調用您的服務。

回覆評論問題:如果您沒有像第二篇文章中那樣配置IIS,那麼您將以匿名方式作爲服務的用戶。

+0

你知道爲什麼當從coldfusion調用web服務時用和用戶名和密碼硬編碼它不起作用,但是當從同一臺計算機調用web服務,但從Internet Explorer使用相同的用戶名和密碼正好? :D – GxG 2011-05-03 08:56:28

+1

對不起,我根本不熟悉coldfusion。您可以更新有關錯誤消息的詳細信息以及如何成功從IE連接(例如,IE提示您輸入用戶名和密碼)的問題。下面的鏈接有一些針對cfinvoke的特定故障排除信息。鏈接:http://ask.metafilter.com/149196/Debugging-CFML – 2011-05-03 13:22:35