Azure Azure目录身份验证的Azure WCF服务

时间:2013-05-06 16:55:43

标签: azure wcf-security wif acs azure-active-directory

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

在这里:Federated authentication (single-sign-on) for a WCF REST/HTML-service on Azure

答案似乎没有相关性。

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

  • 具有各种工作角色的Azure云服务,以及具有REST和SOAP端点的WCF Web角色
  • 包含几个用户的天蓝色活动目录帐户
  • ACS名称空间。

WCF服务将由几家不同的公司使用,但除此之外关闭。我们选择了azure活动目录来为wcf服务和其他应用程序提供SSO。

这是我想要做的:

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

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

到目前为止我做了什么:

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

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

其他信息:

  • WIF 4.5
  • VS2012 Pro
  • C#

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

更新 只是为了添加更多信息,WCF服务正由许多不同的网站发布。我们的每个客户都会从他们自己的网络表单中收集数据,然后使用c#代码添加服务引用,或者如果他们使用php,则通过卷曲等方式将数据发布到网址。该服务有休息和肥皂端点。例如,他们会向mynamespace.cloudapp.net/myservice.svc/servicemethod发送XML或SOAP请求。我要么让他们发送带有该请求的用户名和密码,并在实际的WCF方法中验证这些凭证,要么让他们请求认证令牌,然后发送该认证令牌及其请求。

更新2 我想我找到了丢失的一块。为了将活动目录用作身份提供程序,我看起来需要设置ADFS服务器。我曾经以为ADFS服务器已经设置了azure活动目录帐户,但显然不是这样的情况?没有ADFS服务器有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

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

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

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

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