Azure 访问控制 – 使用 Google 账户进行身份验证






4.20/5 (3投票s)
访问控制 (Access Control) 提供了一种简单的方式来为 Web 应用程序和服务提供身份和访问控制,同时与基于标准的身份提供商集成,包括企业目录(如 Active Directory)和 Web 身份(如 Windows Live ID、Google、Yahoo! 和 Facebook)。
引言
通常,大多数 Web 应用程序都需要某种身份验证过程,并且可以使用自定义身份或任何现有的 Web 身份。在这里,我们可以使用现有的 Google 帐户对云应用程序进行身份验证。因此,拥有 Google 帐户的用户都可以登录到云应用程序。我们需要执行以下一些步骤来完成这个示例应用程序。
步骤 1:在 Azure 门户中为 AppFabric 创建服务命名空间
步骤 2:为 Google 帐户中继服务配置 ACS(访问控制服务)
步骤 3:创建具有 Web 角色的云项目
步骤 4:配置访问控制服务 (ACS)
步骤 5:配置应用程序以使用 ACS 和联合身份验证
步骤 6:在本地测试应用程序
步骤 7:修改现有应用程序以部署到 Azure 门户
步骤 8:为生产环境修改 ACS 门户设置
步骤 9:将云应用程序发布到 Azure 门户
步骤 10:使用生产部署的 DNS URL 运行云应用程序
步骤 1:在 Azure 门户中为 AppFabric 创建服务命名空间
使用拥有 Azure 订阅的有效 Windows Live ID 登录到 Azure 门户。在“托管服务、存储帐户和 CDN”部分,选择 AppFabric,然后从顶部菜单中单击“新建”按钮。
在弹出屏幕中,输入唯一的命名空间(例如:appfabricbyraj),选择访问控制、服务总线和缓存服务以及其他属性。
验证为访问控制创建的命名空间。
步骤 2:为 Google 帐户中继服务配置 ACS(访问控制服务)
选择访问控制的命名空间,然后从顶部菜单中单击“访问控制服务”按钮。页面将重定向到访问控制服务门户。
访问控制服务主页
选择身份提供商,然后单击“添加”按钮。
从屏幕中选择 Google 选项。
导航到下一个屏幕,保留默认设置,然后单击保存按钮。验证 ACS 门户中是否已添加 Google 身份提供商。
步骤 3:创建具有 Web 角色的云项目
创建云应用程序后,解决方案资源管理器将如下所示:
在不进行任何更改的情况下在本地运行应用程序,并复制 URL(此处为:http://127.0.0.1:81/)。
步骤 4:配置访问控制服务 (ACS)
返回 ACS 门户,选择“中继方应用程序”,然后单击“添加”按钮。
在“添加中继方应用程序”中,输入名称(例如:raj azure web application),并在“领域”和“返回 URL”列中输入已复制的本地应用程序 URL http://127.0.0.1:81/。
将其余设置保留原样,然后单击保存按钮,并验证是否已为新创建的应用程序创建了“中继方应用程序”。
现在打开“规则组”,然后单击“规则组”链接进行编辑。
在“编辑规则组”页面上,单击“生成”按钮来生成规则。
选择 Google 帐户,最后单击保存按钮更新更改。
生成规则完成后,验证状态。
现在从“应用程序集成”部分复制 WS-Federation 元数据 URL 以供将来配置使用。
步骤 5:配置应用程序以使用 ACS 和联合身份验证
Windows Identity Foundation (WIF) 帮助 .NET 开发人员构建声明感知应用程序,将用户身份验证从应用程序中外包出去,从而提高开发人员的工作效率,增强应用程序安全性,并实现互操作性。
从以下 URL 下载并安装“Windows Identity Foundation 运行时”和“SDK”软件。如果这些软件已安装在您的计算机上,请跳过此步骤。
Windows Identity Foundation 运行时
Windows Identity Foundation SDK
打开云应用程序,并为 WebRole1 项目“添加 STS 引用”。这将打开联合工具向导。
在联合工具向导中,输入本地应用程序 URL http://127.0.0.1:81/,并忽略警告消息。
现在选择“使用现有的 STS”选项,然后粘贴在步骤 4 结束时复制的联合元数据 URL。理想的 URL 将如下所示……
https://appfabricbyraj.accesscontrol.windows.net/FederationMetadata/2007-06/FederationMetadata.xml
在向导中,保留其余默认设置,然后完成向导。
现在通过在 `
Web.config
//Only add httpRuntime element <httpRuntime requestValidationMode="2.0"/> <authorization> <deny users="?" /> </authorization> ...
步骤 6:在本地测试应用程序
在本地运行应用程序。我们可以注意到页面将重定向到授权页面,并在使用“Google”帐户成功进行身份验证后,它将重定向到云应用程序的实际主页。
Google 帐户登录页面
点击“允许”按钮
本地应用程序主页
步骤 7:修改现有应用程序以部署到 Azure 门户
为 WebRole1 项目添加“Microsoft.IdentityModel”引用,然后选择该组件的属性。
将“复制本地”属性设置为 true,“特定版本”设置为 false。
在 web.config 文件中,用生产 URL 替换本地 URL (http://127.0.0.1:81/)。生产 URL 必须遵循以下格式。
URL:<http / https> ://< 生产 DNS>.cloudapp.net/
例如:http://azurebyraj.cloudapp.net/
您可以在 Azure 门户的“托管服务”属性中找到生产 DNS。
Web.config
<audienceUris> <!--<add value="http://127.0.0.1:81/" />--> <add value="http://azurebyraj.cloudapp.net/" /> </audienceUris> <federatedAuthentication> <wsFederation passiveRedirectEnabled="true" issuer="https://appfabricbyraj.accesscontrol.windows.net/v2/wsfederation" realm="http://azurebyraj.cloudapp.net/" requireHttps="false" /> <cookieHandler requireSsl="false" /> </federatedAuthentication>
步骤 8:为生产环境修改 ACS 门户设置
导航到 ACS 门户,编辑“中继方应用程序”部分,输入生产 URL 并保存更改。
步骤 9:将云应用程序发布到 Azure 门户
从 Visual Studio 2010 创建包,然后将它们上传到 Azure 门户。请参考任何文章,例如:创建和部署 Windows Azure 应用程序,了解如何发布云项目。
注意:这里我使用了生产部署,因为它具有固定的 DNS,而对于暂存部署,它会生成 GUID 前缀,这在配置 URL 时会带来麻烦。
使用应用程序属性验证应用程序 URL。
步骤 10:使用 Azure 门户的 DNS URL 运行云应用程序
应用程序将自动重定向到 Google 帐户主页。
输入 Google 帐户凭据;您可以使用 Gmail 凭据。
从 Azure 门户验证应用程序运行情况。
参考文献
参考了 MSDN 文章:MSDN
历史
初稿