Azure ACS和SimpleMembership

时间:2013-01-30 23:10:43

标签: azure asp.net-mvc-4 single-sign-on acs

我想用:

创建azure mvc4网站(azurewebsites)
  • 公司域内员工的SSO(ADFS已与ACS联合)
  • 通过本地帐户或LiveID OAuth访问外部(非员工)(liveid是ACS上的IdP)。
  • 要求是管理应用程序中的用户配置文件和角色。

我看到以下选项:

  1. 将我的应用程序与ACS联合并使用联合身份验证,为UserProfiles和Membership等创建自定义表集,在此方法中我无法使用任何现有提供程序。我在索赔中没有必要的信息。

  2. 为ACS编写自定义OAuth / OAuth2客户端(我找不到任何客户端)并使用OAuthWebSecurity进行注册。这种方法似乎适合我,我可以使用SimpleMembership等。问题是我找不到任何示例如何以正确的方式实现它。

  3. 问:

    这种情况下的正确方法是什么?

    还有其他方法可以满足我的要求吗?

    ACS是否有OAuthWebSecurity客户端?

    谢谢, 马切伊

3 个答案:

答案 0 :(得分:1)

我选择接近1.因为 -

a)无论如何你需要ws-fed来整合ADFS b)ACS没有OAuth客户端 - ACS仅支持OAuth的一些特殊用例(这就是为什么你没有为它找到客户端)。

你想要完全控制你的数据库 - 而不是使用魔术/半烤(取决于你的观点)简单的会员资格......

答案 1 :(得分:1)

我们最近实施了类似问题的解决方案。我们做的是:

  • 将ACS和身份提供商(Windows Live,Google等)用于身份令牌
  • 使用我们自己的机制将这些身份映射到用户/角色。例如,我们在首次登录时使用工资核算数据来验证对员工的索赔。
  • 对于那些不想使用社交媒体标识的用户,我们允许他们在通过ACS链接的“自己的”身份提供商上创建用户名/密码。这是一项单独的服务,并运行Thinktecture Identity Server的修改版本。因此我们使用thinktecture身份服务作为STS端点。
  • 我们将对联合ADFS执行相同的操作(正如您所做的那样)

随着时间的推移,似乎我们可以使用Thinktecture服务器来替换ACS功能,并提供比ACS中更多的控制(例如使用我们自己的域名),但是现在,ACS工作,我们'我会离开它。但Thinktecture服务作为简单用户名/密码的替代登录对我们来说非常重要 - 它确实意味着托管单独的云服务。

你想从SimpleMembership中得到什么?用户名/密码登录(在这种情况下使用/ host / build一个用户名/密码STS端点),或者成员资格/角色表(不管怎样 很棒)。?

答案 2 :(得分:0)

ASP.NET中有一个OAUTH2客户端框架,我为其编写了一个ACS提供程序。 Web应用程序加载OAUTH2提供程序,该提供程序是OAUTH2端点的外观。实际上,它将ws-fedp与ACS(及其各种发行人)进行了对话。由于oauth协议或ws-fedp协议都隐藏在提供程序中,因此API使用者(ASP.NET管道)不知道(或关心)。毕竟,它已经不在乎是否在同一API背后谈论OAUTH1,OAUTH2或openid。

它非常有效 - 并且毫不费力地重复使用简单的会员。适用于Web表单,网页和MVC。后者2是开源的,其源访问有助于了解更大的情况。