繁体   English   中英

Windows Azure ACS,具有Active Directory作为SSO的身份提供者

[英]Windows Azure ACS with Active Directory as identity provider for SSO

我们有一些基于.NET的Web应用程序。 该应用程序的用户群包括注册以检查其账单的移动订户。 该计划是在我的应用程序中提供单一登录。 为此,我们正在探索将Windows Azure ACS与Active Directory一起用作我的应用程序用户的身份提供者。 通过将Windows Azure ACS与Active Directory用作身份提供者,我们走上了正确的轨道吗?

Windows Azure的Active Directory是单点登录一个很好的选择,但它并没有与 ACS使用,因为在这里可以看到

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

ACS的优势在于

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

但是,不利的一面

  1. 配置更加复杂,并且是解决方案中另一个可能出错的部分
  2. ACS命名空间绑定到单个Azure区域,因此将很难从中恢复数据中心的故障

我必须在以前的应用程序中将ACS与WAAD一起使用,因为(由于某种原因) ASP.Net MVC防伪保护依赖于类型声明

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收集用户凭证并使用WS-Trust端点获取令牌,但这在一定意义上不会为您提供真正的Web SSO,因为登录会话不会在不同的Web应用程序之间自动流动。 。

实际上,在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-点击/

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

之后(在VS 2012中),有一个新的实用程序“身份和访问”,可以让您选择IP,并在ACS中创建一个新组,在其中必须添加我们需要的声明转换规则(表示帖子中的内容应在代码中检查,因为声明已更改)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM