2011-05-02 52 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