使用 Azure) 生成 Real-World 云应用的单个 Sign-On (
使用 Azure 构建真实世界云应用 电子书基于 Scott Guthrie 开发的演示文稿。 其中介绍了 13 种模式和做法,可帮助你成功开发适用于云的 Web 应用。 有关电子书的信息,请参阅 第一章。
开发云应用时需要考虑许多安全问题,但对于本系列,我们将重点介绍一个:单一登录。 人们经常问的一个问题是:“我主要是为公司的员工构建应用;如何在云中托管这些应用,并且当员工运行托管在防火墙中的应用时,他们仍可以使用我的员工所知道的相同安全模型并在本地环境中使用?启用此方案的方法之一称为 Azure Active Directory (Azure AD) 。 Azure AD 使企业业务线 (LOB) 应用可通过 Internet 使用,并使你也能够向业务合作伙伴提供这些应用。
Azure AD 简介
Azure AD 在云中提供 Active Directory 。 主要功能包括:
- 它与 本地 Active Directory 集成。
- 它支持使用应用进行单一登录。
- 它支持 SAML、 WS-Fed 和 OAuth 2.0 等开放标准。
- 它支持 Enterprise Graph REST API。
假设你有一个本地Windows Server Active Directory环境,用于使员工能够登录到 Intranet 应用:
Azure AD 使你能够在云中创建目录。 这是一项免费功能,易于设置。
它可以完全独立于你的本地 Active Directory;你可以将所需的任何人放入其中,并在 Internet 应用中对其进行身份验证。
也可以将其与本地 AD 集成。
现在,所有在本地进行身份验证的员工也可以通过 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”选项卡。
Azure 帐户自动拥有一个 Azure AD 租户,可以单击页面底部的 “添加” 按钮创建其他目录。 例如,你可能想要一个用于测试环境,一个用于生产环境。 仔细考虑新目录的名称。 如果将名称用于目录,然后再次将名称用于其中一个用户,则可能会造成混淆。
门户完全支持在此环境中创建、删除和管理用户。 例如,若要添加用户,请转到“ 用户 ”选项卡,然后单击“ 添加用户 ”按钮。
可以创建仅存在于此目录中的新用户,也可以将 Microsoft 帐户注册为此目录中的用户,或者将另一个 Azure AD 目录中的用户注册为此目录中的用户。 (在实际目录中,默认域为 ContosoTest.onmicrosoft.com。还可以使用自己选择的域,例如 contoso.com.)
可以将用户分配到角色。
该帐户是使用临时密码创建的。
以这种方式创建的用户可以立即使用此云目录登录到 Web 应用。
不过,对于企业单一登录而言,最出色的是 “目录集成 ”选项卡:
如果启用目录集成,则可以将此云目录与已在组织内使用的现有本地 Active Directory同步。 然后,存储在目录中的所有用户都将显示在此云目录中。 云应用现在可以使用其现有的 Active Directory 凭据对所有员工进行身份验证。 所有这一切都是免费的 - 同步工具和 Azure AD 本身。
该工具是一个易于使用的向导,从这些屏幕截图中可以看到。 这些说明并不完整,只是一个演示基本过程的示例。 有关更详细的操作方法信息,请参阅本章末尾 的“资源” 部分中的链接。
单击“ 下一步”,然后输入 Azure Active Directory 凭据。
单击“ 下一步”,然后输入本地 AD 凭据。
单击“ 下一步”,然后指示是否要在云中存储 AD 密码的哈希。
可以存储在云中的密码哈希是单向哈希;实际密码永远不会存储在 Azure AD 中。 如果决定不将哈希存储在云中,则必须使用 Active Directory 联合身份验证服务 (ADFS) 。 选择是否使用 ADFS 时,还需要考虑其他因素。 ADFS 选项需要几个额外的配置步骤。
如果选择在云中存储哈希,则已完成操作,单击“ 下一步”时,该工具将开始同步目录。
几分钟后就完成了。
只需在组织的一个域控制器(Windows 2003 或更高版本上)上运行此功能。 无需重启。 完成后,所有用户都在云中,你可以使用 SAML、OAuth 或 WS-Fed 从任何 Web 或移动应用程序执行单一登录。
有时我们被问及这有多安全 - Microsoft 是否将其用于自己的敏感业务数据? 答案是肯定的,我们愿意。 例如,如果转到 位于 https://microsoft.sharepoint.com/的内部 Microsoft SharePoint 网站,系统会提示你登录。
Microsoft 已启用 ADFS,因此输入 Microsoft ID 时,会重定向到 ADFS 登录页。
输入存储在内部 Microsoft AD 帐户中的凭据后,即可访问此内部应用程序。
我们之所以使用 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 应用。
下一章介绍可用于云应用的数据存储选项。
资源
有关详细信息,请参阅以下资源:
- Azure Active Directory 文档。 windowsazure.com 站点上 Azure AD 文档的门户页。 有关分步教程,请参阅 开发 部分。
- Azure 多重身份验证。 有关 Azure 中多重身份验证的文档的门户页。
- 组织帐户身份验证选项。 说明Visual Studio 2013新建项目对话框中的 Azure AD 身份验证选项。
- Microsoft 模式和做法 - 联合标识模式。
- Windows Azure AD 应用程序中的基于角色和 ACL-Based 授权。 示例应用程序。
- Azure Active Directory 图形 API 博客。
- 访问控制混合标识基础结构中的 BYOD 和目录集成。 Tech Ed 2014 会议视频由加亚娜·巴格达萨里安。
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈