1

我目前正在尝试了解 Azure ACS 与基于声明的身份验证的组合以及使用自定义 STS 的选项,但我只是慢慢地了解(不幸的是,很少)信息源。在我花更多时间在这之前,我想确认我的计划是否可行。我有多个 azure 角色(web+worker),员工和客户都可以通过 Internet 访问这些角色。此外,员工可以从我们的本地网络内部访问这些角色和桌面应用程序。

用户数据来自两个来源。我们的 azure 应用程序包含有关客户和员工的用户数据,我们的(本地)广告仅来自员工。

为了使登录体验尽可能高效(且符合人体工学),当通过我们的本地网络访问时,员工应在桌面应用程序(自动由于 Windows 用户配置文件上下文)和 azure 上自动进行身份验证(Windows 集成身份验证?)应用程序(希望没有登录页面)。另一方面,客户在访问 azure 应用程序时应输入他们的用户凭据,但不必在不同的“凭据源”之间做出决定,他们应该只获取用户名+密码表单。换句话说

  • 员工从本地网络访问 Azure 应用程序 -> 使用集成的 Auth/AD 数据自动登录
  • 员工从 Internet 访问 Azure 应用程序 -> 用户名+密码表单
  • 客户从 Internet 访问 Azure 应用程序 -> 用户名+密码表单

在写这个问题时,我想到了另外两个:

1) 甚至可以根据源/cookie/wizardry 自动登录,还是需要手动用户选择“凭据源”?

2) 如果 Azure ACS“知道”用户名 X 的 AD 帐户与 Azure App 用户 Y 相同,那么登录哪个帐户有关系吗?应用程序可以在任一登录路径上访问相同的声明数据吗?

4

2 回答 2

1

您确定需要自定义 STS 吗?听起来您只想让您的 AD 用户能够使用他们的 Windows 凭据登录到您的 Azure 应用程序(如果他们在域上)(无密码提示)。ADFS 2.0 和 WIF 将促进这一点。此外,如果您设置了 ADFS 代理服务器,那么当这些相同的用户从域外部浏览到您的应用程序时,他们会收到提示输入其域凭据的提示。

现在您的 AD 用户已设置,但如果您希望域外的用户可以访问您的应用程序,您可以将 ADFS 与另一个组织的 ADFS 服务器联合,或者使用 ACS 启用使用消费者身份提供者(如 Google、Yahoo、和 LiveID,它们作为内置选项提供。如果您确实像这样引入了 ACS,您可以将您的公司 ADFS 服务器配置为您的 ACS 实例上的身份提供者,以及 google、yahoo 等等,这样当您的用户浏览到您的站点时,他们将被提示选择他们的身份提供者希望登录。

这是一个很棒的白皮书,演示了使用 ADFS 对云应用程序进行身份验证:

http://www.microsoft.com/download/en/details.aspx?id=13789

有关部署 ADFS(例如部署 ADFS 代理)的更多详细信息,请参阅technet

对于 ACS,有关于如何将其集成到 azure 应用程序以及如何添加 ADFS 身份提供程序的指南和示例:http: //msdn.com/acs

于 2012-04-03T03:59:16.190 回答
0

您可以做的一件事是在请求页面时查看用户凭据以获取身份验证信息。

如果你看...

HttpContext.Current.User.Identity

您可以获得有关用户身份的信息。如果他们在域上,您将看到他们有一个域名,您可以通过编程方式选择将他们定向到登录页面。

我还要说我从未尝试过这样做,所以我不知道是否有内置的方法可以通过简单地在 web.config 中配置一些东西来做到这一点。

于 2012-04-02T20:07:27.927 回答