将Azure ACS(访问控制服务)与ASP.NET Web API一起使用

时间:2012-05-02 23:03:25

标签: c# asp.net-mvc azure acs

我现在正在项目中使用新的ASP.NET Web API,这需要用户身份验证和授权来执行某些操作:例如,更新配置文件页面。

在使用没有API要求的ASP.NET MVC 3的同一项目的早期版本中,我使用Azure ACS和基于角色的访问控制(基于this教程)取得了很大成功。

我希望能够再次使用ACS与Web API,但我不明白ACS如何运作良好,知道是否支持。是否可能/我是否有可能遇到的任何挑战?

2 个答案:

答案 0 :(得分:4)

  
    

但我不明白ACS如何运作良好,知道这是否得到支持。

  

支持。 ASP.NET Web API允许我们构建REST服务。 ACS支持任何类型的REST服务。此article中描述的通常的声明验证过程将起作用。我们只需要将WCF更改为Web API。

最诚挚的问候,

徐明。

答案 1 :(得分:0)

根据我的经验,您指出的链接可能无济于事,因为它用于客户端(WPF / Windows Phone /等)。在服务端使用ACS,我们将处理索赔,我们可以配置ACS以返回我们喜欢的任何声明。声明可以是用户名,但也可以是角色。例如,我们可以创建一个规则来将特定用户映射到角色,而ACS会将角色声明返回给我们。

但是如果我们想要与ASP.NET角色集成,我们需要解析声明(即使它是一个角色声明),并将声明分配给Thread.CurrentPrincipal。如果我们将ACS配置为返回SAML令牌,WIF会为我们执行此操作。如果ACS返回SWT令牌,我们需要自己做,或者使用别人为我们写的库。其中一个库是DPE.OAuth,由DPE团队编写。你可以从http://msdn.microsoft.com/en-us/IdentityTrainingCourse_ACSAndWindowsPhone7获得它。虽然该教程告诉我们如何在Windows Phone中使用ACS,但可以重用服务端OAuth库。

最诚挚的问候,

徐明。