使用 Azure) 生成 Real-World 云应用的单个 Sign-On (

作者 :Rick Anderson,TomDykstra

下载修复项目下载电子书

使用 Azure 构建真实世界云应用 电子书基于 Scott Guthrie 开发的演示文稿。 其中介绍了 13 种模式和做法,可帮助你成功开发适用于云的 Web 应用。 有关电子书的信息,请参阅 第一章

开发云应用时需要考虑许多安全问题,但对于本系列,我们将重点介绍一个:单一登录。 人们经常问的一个问题是:“我主要是为公司的员工构建应用;如何在云中托管这些应用,并且当员工运行托管在防火墙中的应用时,他们仍可以使用我的员工所知道的相同安全模型并在本地环境中使用?启用此方案的方法之一称为 Azure Active Directory (Azure AD) 。 Azure AD 使企业业务线 (LOB) 应用可通过 Internet 使用,并使你也能够向业务合作伙伴提供这些应用。

Azure AD 简介

Azure AD 在云中提供 Active Directory 。 主要功能包括:

  • 它与 本地 Active Directory 集成。
  • 它支持使用应用进行单一登录。
  • 它支持 SAMLWS-FedOAuth 2.0 等开放标准。
  • 它支持 Enterprise Graph REST API

假设你有一个本地Windows Server Active Directory环境,用于使员工能够登录到 Intranet 应用:

此图显示了一个椭圆形结构,其中包含多个设备和两个三角形塔,每个设备与其源之间跨过一条线和箭头,以显示每个连接方式。

Azure AD 使你能够在云中创建目录。 这是一项免费功能,易于设置。

它可以完全独立于你的本地 Active Directory;你可以将所需的任何人放入其中,并在 Internet 应用中对其进行身份验证。

Microsoft Azure Active Directory

也可以将其与本地 AD 集成。

AD 和 WAAD 集成

现在,所有在本地进行身份验证的员工也可以通过 Internet 进行身份验证,而无需打开防火墙或在数据中心部署任何新服务器。 可以继续利用目前已知和使用的所有现有 Active Directory 环境,为内部应用提供单一登录功能。

在 AD 和 Azure AD 之间建立此连接后,还可以允许 Web 应用和移动设备在云中对员工进行身份验证,并且可以启用第三方应用(如 Office 365、SalesForce.com 或 Google 应用)来接受员工的凭据。 如果使用 Office 365,则已设置 Azure AD,因为Office 365使用 Azure AD 进行身份验证和授权。

第三方应用

此方法的好处在于,每当组织添加或删除用户,或者用户更改密码时,你都使用你目前在本地环境中使用的过程。 所有本地 AD 更改都会自动传播到云环境。

如果你的公司正在使用或迁移到 Office 365,好消息是,你将自动设置 Azure AD,因为Office 365使用 Azure AD 进行身份验证。 因此,你可以在自己的应用中轻松使用Office 365使用的相同身份验证。

设置 Azure AD 租户

Azure AD 目录称为 Azure AD 租户,设置租户非常简单。 我们将展示如何在 Azure 管理门户中完成此操作,以便说明这些概念,当然,与其他门户函数一样,也可以使用脚本或管理 API 执行此操作。

在管理门户中,单击“Active Directory”选项卡。

门户中的 WAAD

Azure 帐户自动拥有一个 Azure AD 租户,可以单击页面底部的 “添加” 按钮创建其他目录。 例如,你可能想要一个用于测试环境,一个用于生产环境。 仔细考虑新目录的名称。 如果将名称用于目录,然后再次将名称用于其中一个用户,则可能会造成混淆。

添加目录

门户完全支持在此环境中创建、删除和管理用户。 例如,若要添加用户,请转到“ 用户 ”选项卡,然后单击“ 添加用户 ”按钮。

“添加用户”按钮

“添加用户”对话框

可以创建仅存在于此目录中的新用户,也可以将 Microsoft 帐户注册为此目录中的用户,或者将另一个 Azure AD 目录中的用户注册为此目录中的用户。 (在实际目录中,默认域为 ContosoTest.onmicrosoft.com。还可以使用自己选择的域,例如 contoso.com.)

用户类型

“添加用户”对话框

可以将用户分配到角色。

用户配置文件

该帐户是使用临时密码创建的。

临时密码

以这种方式创建的用户可以立即使用此云目录登录到 Web 应用。

不过,对于企业单一登录而言,最出色的是 “目录集成 ”选项卡:

“目录集成”选项卡

如果启用目录集成,则可以将此云目录与已在组织内使用的现有本地 Active Directory同步。 然后,存储在目录中的所有用户都将显示在此云目录中。 云应用现在可以使用其现有的 Active Directory 凭据对所有员工进行身份验证。 所有这一切都是免费的 - 同步工具和 Azure AD 本身。

该工具是一个易于使用的向导,从这些屏幕截图中可以看到。 这些说明并不完整,只是一个演示基本过程的示例。 有关更详细的操作方法信息,请参阅本章末尾 的“资源” 部分中的链接。

WAAD 同步工具配置向导 -映像 1

单击“ 下一步”,然后输入 Azure Active Directory 凭据。

WAAD 同步工具配置向导 - 映像 2

单击“ 下一步”,然后输入本地 AD 凭据。

WAAD 同步工具配置向导 - 图像 3

单击“ 下一步”,然后指示是否要在云中存储 AD 密码的哈希。

WAAD 同步工具配置向导 - 映像 4

可以存储在云中的密码哈希是单向哈希;实际密码永远不会存储在 Azure AD 中。 如果决定不将哈希存储在云中,则必须使用 Active Directory 联合身份验证服务 (ADFS) 。 选择是否使用 ADFS 时,还需要考虑其他因素。 ADFS 选项需要几个额外的配置步骤。

如果选择在云中存储哈希,则已完成操作,单击“ 下一步”时,该工具将开始同步目录。

WAAD 同步工具配置向导 - 图像 5

几分钟后就完成了。

WAAD 同步工具配置向导 - 图像 6

只需在组织的一个域控制器(Windows 2003 或更高版本上)上运行此功能。 无需重启。 完成后,所有用户都在云中,你可以使用 SAML、OAuth 或 WS-Fed 从任何 Web 或移动应用程序执行单一登录。

有时我们被问及这有多安全 - Microsoft 是否将其用于自己的敏感业务数据? 答案是肯定的,我们愿意。 例如,如果转到 位于 https://microsoft.sharepoint.com/的内部 Microsoft SharePoint 网站,系统会提示你登录。

Office 365 登录

Microsoft 已启用 ADFS,因此输入 Microsoft ID 时,会重定向到 ADFS 登录页。

ADFS 登录

输入存储在内部 Microsoft AD 帐户中的凭据后,即可访问此内部应用程序。

MS SharePoint 网站

我们之所以使用 AD 登录服务器,主要是因为我们在 Azure AD 可用之前已经设置了 ADFS,但登录过程是通过云中的 Azure AD 目录完成的。 我们将重要的文档、源代码管理、性能管理文件、销售报告等放在云中,并使用此完全相同的解决方案来保护它们。

创建使用 Azure AD 进行单一登录的 ASP.NET 应用

使用 Visual Studio 可以非常轻松地创建使用 Azure AD 进行单一登录的应用,从几个屏幕截图中可以看到这一点。

创建新的 ASP.NET 应用程序(MVC 或 Web Forms)时,默认身份验证方法是 ASP.NET Identity。 若要将更改更改为 Azure AD,请单击“ 更改身份验证 ”按钮。

更改身份验证

选择“组织帐户”,输入域名,然后选择“单一登录”。

“配置身份验证”对话框

还可以为应用授予对目录数据的读取或读/写权限。 如果这样做,它可以使用 Azure Graph REST API 查找用户的电话号码、了解他们是否在办公室、上次登录时间等。

这就是你必须做的 - Visual Studio 会请求 Azure AD 租户的管理员凭据,然后为新应用程序配置项目和 Azure AD 租户。

运行项目时,会看到一个登录页,可以使用 Azure AD 目录中用户的凭据登录。

组织帐户登录

已登录

将应用部署到 Azure 时,只需选中“启用组织身份验证检查”框,然后 Visual Studio 会再次为你处理所有配置。

发布网站

这些屏幕截图来自一个完整的分步教程,该教程演示如何生成使用 Azure AD 身份验证的应用: 使用 Azure Active Directory 开发 ASP.NET 应用

总结

在本章中,你已了解 Azure Active Directory、Visual Studio 和 ASP.NET,可以轻松地为组织的用户在 Internet 应用程序中设置单一登录。 用户可以使用与在内部网络中使用 Active Directory 登录时使用的相同凭据登录 Internet 应用。

下一章介绍可用于云应用的数据存储选项。

资源

有关详细信息,请参阅以下资源: