【问题标题】:WCF consumed by CF applicationCF 应用程序使用的 WCF
【发布时间】:2011-08-16 23:55:33
【问题描述】:

我有一个需要由 Coldfusion 应用程序使用的 WCF Web 服务。 那不是真正的问题。问题是该服务在特定用户的 IIS 下运行。我如何判断目标应用程序何时调用服务,特定应用程序正在调用服务而不是幽灵应用程序。

例如:

应用程序 x 正在调用服务 y,应该没问题。 应用程序 z 也在调用服务 y,它不应该被允许这样做。

【问题讨论】:

  • GxG,你解决了这个问题吗?我也想知道。

标签: wcf security coldfusion wcf-security


【解决方案1】:

根据@Justin 的回答中的 cmets,CF 客户端似乎只能支持 WS-I Basic Profile。这使用内置的 HTTP Basic 身份验证机制。 Here is an article 解释了如何为这种身份验证模式配置 WCF 服务。

This article explains how you need to configure IIS 实际支持 HTTP Basic 身份验证。如果将 IIS 主机设置为具有与提交给服务的用户名和密码匹配的本地计算机(首选)或域 Windows 帐户,则可以跳过创建自定义身份验证器。否则,您编写的自定义验证器将决定谁有权调用您的服务。

回复评论问题:如果您没有像第二篇文章中那样配置 IIS,那么您将以匿名用户身份使用您的服务。

【讨论】:

  • 你知道为什么当使用 和硬编码的用户名和密码从 Coldfusion 调用 Web 服务时它不起作用但是从同一台计算机但从 Internet 调用 Web 服务时使用相同用户名和密码的资源管理器可以正常工作吗? :D
  • 抱歉,我对coldfusion一点也不熟悉。您可以使用有关错误消息以及如何从 IE 成功连接的更多详细信息来更新问题(例如,IE 是否提示您输入用户和密码)。下面的链接包含一些针对 cfinvoke 的特定故障排除信息。链接:ask.metafilter.com/149196/Debugging-CFML
【解决方案2】:

听起来您需要为 WCF 服务设置某种身份验证:

Security Messages Using Message Security

总而言之,您需要向授权应用程序提供令牌或用户名/密码,然后他们会将这些信息连同他们的请求一起传递给您。然后,您可以验证调用应用程序是否有权使用您的服务。

【讨论】:

  • 在coldfusion部分调用wcf服务时,有一个cfinvoke命令接受参数用户名和密码......但是我如何在另一端读取它们?通过 IIS 还是在应用程序本身内部?
  • @GxG,您需要确定 ColdFusion 客户端是否能够与 WS-* soap 标准互操作。如果可以,那么这个答案将起作用。否则,它可能只支持 WS-I Basic 概要文件。在这种情况下,您需要配置 WCF 服务以使用 basicHttpBinding 实现基本身份验证。看到这个问题和答案:stackoverflow.com/questions/2904883/…
  • @Sixto Saez:试过了,但问题是我需要这个服务在特定用户下运行,所以基本身份验证不是答案,或者我做错了......要么我需要对来自coldfusion应用程序的呼叫进行身份验证。 Coldfusion 发送凭据,但我收到匿名...
【解决方案3】:

如果您谈论的是 WCF 服务的安全性,答案是应用安全层。例如,您可以做基本的安全,每个授权的应用程序使用用户名和密码来访问服务。但是,如果您想要 Active Directory 身份验证之类的东西,则需要使用更复杂的身份验证设置。一种方法是使用 WIF (http://msdn.microsoft.com/en-us/magazine/ee335707.aspx)。有一些很好的例子可以说明如何实现它以允许更安全的 WCF 应用程序。

【讨论】:

    猜你喜欢
    • 2023-03-08
    • 2011-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多