3

我知道这个问题似乎与这里的其他儿子相似,但我已经尝试过这里发布的答案:Securing WCF 4.5 service using Azure ACS 2.0

在这里:Azure 上 WCF REST/HTML 服务的联合身份验证(单点登录)

Ans似乎都不相关。

这是我到目前为止所拥有的。

  • 具有各种辅助角色的天蓝色云服务,以及具有 REST 和 SOAP 端点的 WCF Web 角色
  • 一个有几个用户的天蓝色活动目录帐户
  • ACS 命名空间。

WCF 服务将由几个不同的公司使用,但除此之外,其他公司已关闭。我们选择 azure Active Directory 为 wcf 服务和其他应用程序提供 SSO。

这是我想做的事情:

  • 使用 Azure Active Directory 中的 WCF 服务为每个公司创建用户/密码。
  • 仅允许具有有效用户名和密码对的公司获取访问令牌
  • 让每家公司使用他们的令牌来访问 WCF 方法。

我认为这并不难完成,但是所有的教程似乎都是针对带有控制台应用程序的 IIS 托管或自托管服务。

到目前为止我做了什么:

  • 在 azure 活动目录中添加 WCF 服务作为集成应用程序
  • 在 ACS 中创建了一个名为 testAAD 的新身份提供程序,并将集成应用程序中的 WS-Federation 元数据添加到该提供程序
  • 添加了使用新创建的 testAAD 身份提供者的依赖方应用程序
  • 添加了一个具有传递规则的规则组,该规则使用 testAAD 身份提供程序和默认设置。

有关详细信息,请参见此处的选项 1 。我需要知道我所做的是否接近正确,如果是,我如何让 WCFservice 开始使用这些设置。

其他信息:

  • WIF 4.5
  • VS2012 专业版
  • C#

任何相关的教程链接或一般建议都会很棒。提前致谢。

更新: 只是为了添加更多信息,许多不同的网站正在发布 WCF 服务。我们的每个客户都将从他们自己的 Web 表单中收集数据,然后使用 c# 代码添加服务引用,或者如果他们使用 php,则通过 curl 之类的方式将数据发布到 url。该服务有休息和肥皂端点。例如,他们会将 XML 或 SOAP 请求发送到 mynamespace.cloudapp.net/myservice.svc/servicemethod。我希望他们使用该请求发送他们的用户名和密码,并在实际的 WCF 方法中验证这些凭据,或者让他们请求一个身份验证令牌,然后将该身份验证令牌与他们的请求一起发送。

更新 2 我想我找到了丢失的部分。为了将活动目录用作身份提供者,我似乎需要设置一个 ADFS 服务器。我曾以为 ADFS 服务器已经使用 azure Active Directory 帐户设置,但显然不是这样?没有 ADFS 服务器有没有办法做到这一点?

4

1 回答 1

0

您没有涉及的主要问题是how will these companies use that WCF service?. 通过您的门户网站,还是通过富客户端(例如 WinForms / WPF)?

如果是富客户端,可以看看这篇博文吗?它向您展示了如何使用令牌保护 WCF 服务并从 WPF 应用程序访问该服务。

如果您计划只允许通过您的门户网站访问 WCF 服务,那么情况就有些不同了。您可以先通过 Azure AD 保护您的门户并获取用户的令牌。然后使用该令牌对 WCF 进行身份验证。

但在真正的 Web 场景中,client调用服务的实际是your web server. 如果是这种情况,我将只使用 Azure AD 保护我的 Web 门户。然后用一个访问令牌保护我的 WCF。我可以从 Azure AD 访问控制中的服务标识获取该令牌。并将此“服务令牌”作为来自我的web server. 为了增加审计(和合规性),我还将发送原始用户令牌,以跟踪谁访问了什么以及何时访问。

于 2013-05-07T06:45:14.847 回答