带有Active Directory的Windows Azure ACS作为SSO的标识提供程序

时间:2013-07-29 17:02:54

标签: azure

我们有一些基于.NET的Web应用程序。应用程序的用户群包括注册查看账单的移动用户。该计划是在我的应用程序中提供单点登录。我们正在探索将Windows Azure ACS与Active Directory一起用作我的应用程序用户的身份提供程序。我们是否正在使用带有Active Directory的Windows Azure ACS作为身份提供商?

2 个答案:

答案 0 :(得分:1)

Windows Azure Active Directory是单点登录的理想选择,但不必与ACS一起使用,如此处所示

http://msdn.microsoft.com/en-us/library/windowsazure/dn151790.aspx#BKMK_Connecting

ACS的优点是

  1. 它可用于执行声明转换,而无需编写任何代码(例如,在自定义的ClaimsAuthenticationManager中)。你将无法处理复杂的转换,但简单的转换就可以了。
  2. 它可以提供多个身份提供者的联合,因此如果您的用户宁愿使用Facebook而不是WAAD,那么它会更灵活。
  3. 然而,在不利方面

    1. 配置更复杂,是解决方案中另一个可能出错的移动部件
    2. ACS命名空间绑定到单个Azure区域,因此数据中心的故障将难以从中恢复
    3. 我必须在我之前使用过的应用程序中使用ACS和WAAD,因为(出于某种原因)ASP.Net MVC anti-forgery protection依赖于类型声明

      http://schemas.microsoft.com/accesscontrolservice/2010/07/claims/identityprovider
      
      由WAAD 未颁发。我在ACS中使用了一个简单的声明转换规则来转换WAAD发布的类型

      的声明
      http://schemas.microsoft.com/identity/claims/identityprovider
      

      进入类型

      的等效声明
      http://schemas.microsoft.com/accesscontrolservice/2010/07/claims/identityprovider
      

      这是我当时能够解决问题的唯一方法,因此在我的案例中使用ACS是值得的。我从未发现你是否可以完全使用WAAD(可能使用图形API),因为当时项目的时间压力。

      在回答评论中的额外问题时,如果您使用WS-Federation或OAuth 2,则无法替换登录页面。这些方法的关键点是用户只需将其凭据输入身份提供者提供的(可信)UI。我认为你可以用你自己的图像替换图像。也许您可以使用自己的UI收集用户凭据并使用WS-Trust端点获取令牌,但这不会为您提供真正的Web SSO,因为登录会话不会自动在您的不同Web应用程序之间流动

答案 1 :(得分:0)

实际上,有一种解决方法可以在ACS中将AAD配置为身份提供者。 http://www.cloudidentity.com/blog/2013/10/03/provisioning-a-windows-azure-active-directory-tenant-as-an-identity-provider-in-an-acs-namespacenow-point-click/

基本上,当在ACS中创建AAD作为身份提供者时,必须要做的是添加FederationMetadata.xml URL。

之后(在VS 2012中)有一个新的实用程序Identity and Access,可让您选择IP,并将在ACS中创建一个新组,其中必须添加我们需要的声明转换规则(据说在帖子中应该检查代码,因为声明有变化)