《微软云计算Windows Azure开发与部署权威指南》——6.3 Windows Azure的AppFabric存取控制应用程序设计

本文涉及的产品
访问控制,不限时长
简介:

本节书摘来自异步社区《微软云计算Windows Azure开发与部署权威指南》一书中的第6章,第6.1节,作者: 尹成 , 郝庭毅 , 张俊强 , 孙奉刚 , 寇睿明 更多章节内容可以访问云栖社区“异步社区”公众号查看。

6.3 Windows Azure的AppFabric存取控制应用程序设计

在过去的几十年里,企业中对于身份识别问题的解决方案一直在向基于声明靠拢。基于声明的身份模型将应用程序中的身份认证和授权的公共部分抽取出来,集中到外部服务中,这个服务由安全和身份识别方面的专家编写和维护,这样做是非常有益的。

图6-9所示为ACS的一般应用场景。


f2e7133a4a172b9ae00d01cf02491324b4643e8c

客户端请求①并由②获得一个SWT令牌,之后客户端使用该SWT来调用服务③,一旦被ACSAuthorizationManager成功验证,④便能访问到所需的服务方法。

从另一方面来看,确保用户可以连接到云端服务是任何解决方案中最基本的需求,无论是本地应用、云端应用还是二者都有。而用户账户存放在不同网站或商业实体造成的隔离成为身份验证的瓶颈,使用一些标准能够打破这种瓶颈,但是要对来自不同机构的用户开放云服务是件很麻烦的事情。比如,现在想将云服务向来自Facebook、Live ID、Google和企业名录里的用户开放,这要求实现四种不同的认证协议。如今的世界变化迅速而频繁,这就要求不断更新协议使用最新版本的认证机制,这将占用很大的资源,使得不能集中资源做好业务。Windows Azure访问控制服务可以提供认证的外包服务,不需要考虑如何与各种身份提供商直接建立联系,降低了工程的耦合度。访问控制服务负责与各个服务提供商交流,并将认证结果使用.NET平台工具(也就是Windows Identity Foundation技术)支持的一种协议规范化。使用WIF只需单击几下就可以将ACS作为的云端服务的认证管理器。除此之外,访问控制服务还可以更好地控制对于每一个认证事件该用户需要被赋予什么属性。图6-10所示为从功能角度来看访问控制服务。


6c0c73384fea9a7d64e892fb371d975ee6b2826b

接下来介绍利用微软Windows Azure平台的训练包开发一个能对来自多个身份提供商的不同用户进行身份验证的访问控制服务实例项目,使用的操作系统是Windows 7,使用的训练包是WATK June2012.exe,训练包下载网址:http://www.microsoft.com/en-us/download/details.aspx?id=8396

在进行开发之前要确保已经安装了如下软件或组件。

  • IIS 7.0。
  • Microsoft .NET Framework 4.0。
  • Microsoft Visual Studio 2010。
  • AppFabric SDK。
  • Microsoft Windows Identity Foundation Runtime。
  • Microsoft Windows Identity Foundation SDK。
  • Microsoft Windows PowerShell。
  • Windows Azure平台的订阅账号。

训练包下载完后双击运行,安装后找到安装根目录下的LabsIntroAccessControlServiceSource目录,双击运行Setup.cmd,启动安装进程,它将进行环境检查和配置,安装Visual Studio代码段。如果出现了用户账户控制对话框,请确认以继续。

开发步骤如下。

1.步骤一:创建初始解决方案
① 管理员权限打开VS2010。

② 选择“open”命令,从SourceEx1-AcceptUsersFromMultipleIPsBegin文件夹下打开WebSiteACS.sln。

③ 创建一个空的网址,如图6-11所示。右键单击WebSiteACS解决方案,选择“add”→“New Web Site”,在左侧选择“Visual C#”模板,单击“ASP.NET Web Site”。将“Web location”旁边的下拉框选为“HTTP”,值设为“https://localhost/WebSiteACS”,单击“OK”按钮。


0a1a4762abb07caf5eefcc29cfcea38bd3e7c257

④ 进入Solution Explore,删除Account、Scripts两个文件夹和About.aspx、Global.aspx两个文件,如图6-12所示。

⑤ 打开Site.master文件,删除class名为“loginDisplay”的DIV和ID为“NavigationMenu”的Menu,删完后如图6-13所示。


d16fbd4ad34da9ac62dfa919188925421ef4853e

⑥ 打开Web.config文件,删除以下部分。

connectionStrings
system.web/authentication
system.web/membership
system.web/profile
system.web/roleManager

删除后的Web.config如图6-14所示。


daeae56bbfd9d95a20e203bbad958abaeb0f1325

⑦ 按F5运行该网站,确保其运行正常。如果出现“Debugging Not Enabled”的警告框,选择“Modify the Web.config file to enable debugging”,单击“OK”按钮,如图6-15所示。运行正常后界面如图6-16所示。


c1eeac66bb5d00235813696120fd164e139b5154

目前该网站没有任何访问控制机制。

2.步骤二:注册Windows Azure访问控制服务并创建命名空间
① 进入网址https://manage.windowsazure.com。如果没有事先登录过,会出现登录界面,需要输入微软账户(Windows Live ID)。

② 由于本书编写时在新的门户网站上还没有访问控制的连接,需要进入以前的门户网站。将鼠标光标放在主页的“PREVIEW”上,单击“Take me to the previous portal”,如图6-17所示。


a3139627a0d358f8851523426744fca4dfe0bf4f

③ 单击左下角的“Service Bus,Access Control &Caching”按钮,得到如图6-18所示页面。

④ 添加一个新的访问控制命名空间,访问控制命名空间是唯一的,所有的访问控制服务的访问地址都包含该命名空间。选中左侧面板中的“Access Control”后,单击左上侧的“New”按钮,如图6-19所示。


<a href=https://yqfile.alicdn.com/9ae90423866a3c2f8f29fa4784ac47fae4041d03.png" >

⑤ 单击“New”后会弹出一个对话框。为Namespace输入名字,选择Country/Region,单击“Create Namespace”按钮,如图6-20所示。注意,命名空间必须是全球唯一的。


<a href=https://yqfile.alicdn.com/04f02577ff45654340ced96f73f69d1b9d12664c.png" >

⑥ 服务被激活的过程中读者要耐心等待,分配必须的资源会花费几分钟时间。激活后的服务状态为“Active”,如图6-21所示。


a038967235a350c102efab62dba00bda9a2204d6

3.步骤三:配置允许的身份提供商和依赖方,签写证书
① 选中命名空间,在上方工具栏中单击“Access Control Service”按钮,如图6-22所示。要确保允许appservices.azure.com网站弹出窗口。


b66d45fec451df1d24f523fde090ad5272b57b12

② 单击后进入访问控制服务管理门户,如图6-23所示。


dacff30029a697abe16504004c21ed446940a0e1

③ 管理门户左侧的导航栏提供了可以对设置进行修改的全局视图。单击“Trust Relationship”下的“Identity Provider”连接,主区域会显示对身份提供商的管理页面,如图6-24所示。


600d89ee8d77658d3138b3d9dc97c66b5f4ab076

④ 单击身份提供商表格上的“Add”链接,选择要在该访问控制服务命名空间中添加的身份提供商,如图6-25所示,单击“Next”按钮。Windows Live ID默认添加。


<a href=https://yqfile.alicdn.com/ecb02ca9abc0b983e33c18bf08aa8b8f4bfc9308.png" >

⑤使用默认设置,单击“Save”按钮,如图6-26所示。


90fe3e1495948f43855e7294d4cce7ca7c1fefae

⑥ 参考步骤④、⑤添加其他的身份提供商,本例添加完后如图6-27所示。


345e08f94a5e2d4fb9e432bfb06edd68813c0cba

⑦ 单击导航栏中的“Relying Party Applications”链接以使用ACS注册网站。“Relying Party”是云服务的代言人,它与“Identity Provider”进行交互,进行用户的身份验证,如图6-28所示。


5a1a044097659473a8ee7db85d97f3f686287783

⑧ 单击“Relying Party Applications”表格上面的“Add”链接,添入如下值。添加完成后的结果如图6-29所示。

Name: WebSiteACS。

Mode: Enter settings manually。

Realm: https://localhost/WebSiteACS/。

Return URL: https://localhost/WebSiteACS/Default.aspx。

Error URL: leave the field empty。

Token format: SAML 1.1。

Token encryptionpolicy: None。

Token lifetime(secs): 600。

Identity Providers: Google, Windows Live ID, Yahoo!。

Rule groups: Create New Rule Group。

Token signing: Use service namespace certificate standard。


c4881a794f3dfb3008fb368264838becdff72bd4

⑨ 单击“Save”按钮。

10 在导航栏的“Trust Relationships”部分,单击“Rule Groups”链接,选择默认的规则组,如图6-30所示。

11 单击“Default Rule Group for WebSiteACS”,然后单击“Generate”链接,如图6-31所示。将3个身份提供商全部选中,以能够基于可用的声明类型自动为其生成规则,单击“Generate”按钮,如图6-32所示。不同的身份提供商提供不同的声明,ACS能够识别并且生成相应的默认规则。最后单击“Save”按钮。


2bacff07663dbc4f649eddc98be6014c338b07f0


30f794e0f835e4c69587fe2926eed6cb230f7744

12 在导航栏的“Development”部分单击“Application Integration”链接。这里有各种URI,当配置云服务时可以派上用场。

13 进入“Endpoint Reference”部分,将“WS-Federation Metadata”的值复制下来,在下面的步骤中将派上用场,如图6-33所示。


9c2d0d46533864e6cf796ea7f77a3b55b5bce49c

4.步骤四:配置网址使接收来自访问控制服务的令牌
ACS能够接收和处理来自很多身份提供商通过不同协议、使用不同格式的令牌,并将传入的消息用另一种不同的令牌规范化,这个令牌的网站可以识别。ACS可以在不同的协议上发出不同的令牌。对于网站,默认的协议是WS-Federation。读者并不需要深入理解这个协议,只需要知道WIF(Windows Identity Foundation)支持该协议,所以可以将云服务的身份验证外包给令牌提供源,比如ACS本身。值得一提的是,WIF对Visual Studio进行了扩展,使其提供向导可以自动配置的云服务,将认证进行外包而不用编写代码。它只需要一个可以描述要使用的令牌提供源的地址,在本例中就是在步骤三最后复制的WS-Federation Metadata address。下面我们将通过WIF向导将认证外包给ACS。

进入Visual Studio的Solution Explorer,右键单击“https://localhost/WebSiteACS/”项目,选择“Add STS reference”。

② Federation Utility窗口出现后,按照向导完成以下步骤。

a.在“Welcome”界面保留预填充的值,单击“Next”按钮继续,如图6-34所示。


52a0accf018797ec6ebd1245e40e431a16398deb

b.在“STS options”页中选择第三个单选按钮“Use an existing STS”选项,将步骤三最后复制的端点地址即“Endpoint Reference WS-Federation metadata”的值贴入,单击“Next”按钮,如图6-35所示。


8299f01aed30869efd455ccb17b8af42e24da0e9

c.在“STS signing certificate chain validation error”页中选择“Disable certificate chain validation”,如图6-36所示,单击“Next”按钮继续。


45e518edad42a01bb05a67b66e9fc85226434252

ion”

d.在“Security token encryption”页中选择“No encryption”,单击“Next”按钮,如图6-37所示。


<a href=https://yqfile.alicdn.com/8835d8fd77c20cfa5236fea781736454e2d23e4e.png" >

e.在“Offered claims”页中单击“Next”按钮,如图6-38所示。


<a href=https://yqfile.alicdn.com/e1705c3ac720c51c5c08117cc4e0fddf7669b534.png" >

f.在“Summary”页中重新审查做的改动,没有问题则单击“Finish”。

现在我们已经完成了该示例,下面进行验证。

① 按F5键启动调试。信任方(https://localhost/WebSiteACS/)会重定向到ACS进行认证。

② 选择身份提供商。将会被重定向到身份提供商的网站并要求输入相关证书。此处本例使用的是Windows Live ID,如图6-39所示。


dff1005e89a3f7b2f928ddc2454830ab18f07d8d

③ 在Windows Live ID登录网站并输入Live ID和密码,如图6-40所示。


<a href=https://yqfile.alicdn.com/df3c07f98fef55e0d35c5d192ac10bf6781271ac.png" >

④ 身份验证成功后就会重新返回到ACS,ACS快速处理后重定向返回的网址。

⑤ 这整个过程对用户都是透明的,但是网站知道是来自ACS的合法令牌在请求访问。被授权访问后就会进入网站的默认页面,如图6-41所示。


<a href=https://yqfile.alicdn.com/050734b07f8e75142f64e6e0ed28571a6f627647.png" >

⑥ 验证结束,关闭浏览器。

相关实践学习
消息队列+Serverless+Tablestore:实现高弹性的电商订单系统
基于消息队列以及函数计算,快速部署一个高弹性的商品订单系统,能够应对抢购场景下的高并发情况。
云安全基础课 - 访问控制概述
课程大纲 课程目标和内容介绍视频时长 访问控制概述视频时长 身份标识和认证技术视频时长 授权机制视频时长 访问控制的常见攻击视频时长
相关文章
|
19天前
|
云安全 存储 监控
云计算安全:AWS与Azure的安全策略与实践比较
【10月更文挑战第26天】本文详细比较了AWS和Azure在安全性方面的策略和实践,涵盖身份与访问管理、数据加密与保护以及安全监控与响应。通过代码示例展示了两家云服务提供商在实际应用中的具体操作,帮助企业在选择云服务时做出明智决策。
29 0
|
6天前
|
小程序 云计算 Android开发
发者社区 云计算 文章 正文 小程序开发与公众号用户关联推送消息(九)
发者社区 云计算 文章 正文 小程序开发与公众号用户关联推送消息(九)
22 3
|
11天前
|
小程序 云计算 开发者
|
18天前
|
云安全 存储 监控
云计算安全:AWS与Azure的安全策略与实践比较
【10月更文挑战第27天】本文对比分析了AWS和Azure在云计算安全领域的策略与实践,涵盖技术、定价、混合云工具等方面。通过代码示例展示了如何在两个平台上实施安全措施,如监控告警、数据加密和身份管理。总结了两者的优缺点,帮助读者根据具体需求选择合适的云服务提供商。
33 4
|
15天前
|
人工智能 Kubernetes 安全
通过阿里云计算巢部署NVIDIA NIM,加速企业大语言模型SaaS化
在人工智能飞速发展的今天,大语言模型(LLM)为各个行业带来了全新的场景和机遇。诸如客户服务数字人,计算机辅助药物研发的生成式虚拟筛选,基于检索增强生成(RAG)的企业多模态PDF数据提取,网络安全流数据过滤、处理和分类优化等工作流,正在无缝集成和运行在定制化的企业AI应用,企业还能够基于专有业务数据和用户反馈数据,不断优化AI应用。
|
1月前
|
边缘计算 安全 网络安全
|
1月前
|
Cloud Native 持续交付 云计算
云端新纪元:探索云原生技术的奥秘在当今数字化时代,云计算已成为推动企业创新和增长的关键动力。随着云平台的不断成熟,云原生技术应运而生,以其独特的优势引领着一场新的技术革命。本文将深入探讨云原生的核心概念、主要特点以及它如何改变现代软件开发和部署的方式,为您揭开云原生这一神秘面纱。
云原生是一种构建和运行应用程序的方法,充分利用了云平台的弹性、分布式本质以及声明式基础设施。本文将解析云原生的十二要素,微服务架构的优势,以及容器化、持续集成与持续部署(CI/CD)等核心技术的实践应用。通过深入浅出的方式,让读者理解云原生不仅是一种技术,更是一种文化和方法论,它正在重塑软件开发流程,提高资源利用率和应用系统的可扩展性与容错性。
|
3月前
|
人工智能 安全 Windows
微软更新警告——70%的Windows用户现在面临风险
微软更新警告——70%的Windows用户现在面临风险
微软更新警告——70%的Windows用户现在面临风险
|
3月前
|
Web App开发 存储 安全
微软警告数百万Windows用户:切勿冒险丢失所有数据
微软警告数百万Windows用户:切勿冒险丢失所有数据
微软警告数百万Windows用户:切勿冒险丢失所有数据
|
3月前
|
机器学习/深度学习 监控 API
基于云计算的机器学习模型部署与优化
【8月更文第17天】随着云计算技术的发展,越来越多的数据科学家和工程师开始使用云平台来部署和优化机器学习模型。本文将介绍如何在主要的云计算平台上部署机器学习模型,并讨论模型优化策略,如模型压缩、超参数调优以及分布式训练。
664 2