【问题标题】:Azure WCF Service with Azure Active Directory Authentication带有 Azure Active Directory 身份验证的 Azure WCF 服务
【发布时间】:2013-07-23 09:55:45
【问题描述】:

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

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

Ans 似乎都不相关。

这是我目前所拥有的。

  • 具有各种辅助角色的 Azure 云服务,以及具有 REST 和 SOAP 端点的 WCF Web 角色
  • 一个有几个用户的 azure Active Directory 帐户
  • ACS 命名空间。

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

这是我想做的:

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

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

到目前为止我做了什么:

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

有关详细信息,请参阅选项 1 here。 我需要知道我所做的是否接近正确,如果是,我如何让 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 服务器有没有办法做到这一点?

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 感谢您的快速回复,请查看我的更新。我不确定你提到的任何场景是否适合我的情况。
    猜你喜欢
    • 2015-01-11
    • 2016-02-14
    • 1970-01-01
    • 2010-11-05
    • 1970-01-01
    • 2023-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多