0

我想创建 azure mvc4 网站(azurewebsites):

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

我看到以下选项:

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

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

问:

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

还有其他选择可以满足我的要求吗?

ACS 是否有任何 OAuthWebSecurity 客户端?

谢谢, Maciej

4

3 回答 3

1

我会选择方法1。因为 -

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

无论如何,您都希望完全控制您的数据库 - 而不是使用魔术/半生不熟(取决于您的观点)简单的会员资格...

于 2013-01-31T08:20:34.603 回答
1

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

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

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

您想从 SimpleMembership 中得到什么?用户名/密码登录(在这种情况下使用/主机/构建用户名/密码 STS 端点),或成员/角色表(无论如何都不很好)。?

于 2013-05-28T15:31:59.190 回答
0

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

它非常有效-并且可以毫不费力地重用简单的会员资格。适用于 Web 表单、网页和 MVC。后两者是开源的,其源代码访问有助于看到更大的图景。

于 2013-05-28T13:40:40.240 回答