Windows Azure AppFabric 入门教学系列 (五):初探Access Control Service
2012-03-22 11:56:30 来源:WEB开发网(这里我们看到打开了对于Get3DaysForecast服务的访问)
返会Rule ID = rul_462d5abd1326c40993f9ec2e766c0ab3b69c11093404db2736d81f5e6018caf141d2e4cdd2164335
4.6 输入如下代码,并执行,以获得TokenPolicyKey
acm get tokenpolicy -id:tp_18d47a547b0f40648fdabfe753885dd4 -service:{your service namespace} -host:accesscontrol.windows.net -mgmtkey:{your management key}
在Service项目,program.cs中,以如上结果中的TokenPolicyKey填入下处:
private const string TokenPolicyKey = "{insert token policy key here}";
4.7 输入如下代码,并执行,以获得IssuerKey。
acm get issuer -id:iss_8c389a6764e8a26bf5133a7ab9c830f8bea33a82 -service:{your service namespace} -host:accesscontrol.windows.net -mgmtkey:{your management key}
在Client项目,program.cs中,以如上结果中的IssuerKey填入下处:
private const string IssuerKey = "{insert issuer key here}";
并将ServiceNamespace 改为您在本教程第一篇文章中创建的服务命名空间。
验证:
至此,代码已经创建完毕,我们已经可以进行调试了。
1.右击Service项目,Debug->Start new Instance
2.右击Client项目,Debug->Start new Instance启动另一调试实例。最终效果如图:
我们看到对于Get10DaysForecast方法的调用被服务拒绝了。因为对于访问规则设定时我们只开放了对于Get3DaysForecast的访问。参看步骤3.8
探析:
让我们打开Client项目,Program.cs,如下图:
我们看到上图Client启动时,GetACSToken首先会向ACS请求SWT令牌,细节如下图:
1. 构造WRAP协议的键值对。
2. 发送请求
3. 将ACS返回的字符串中抽离出SWT,并返回。
成功返回后acsToken变量值为类似如下白框内字符串(实为SWT):
在调用服务之前,在请求头部加入WRAP访问令牌。
在每次调用服务,Get3DaysForecast和Get10DaysForecast时,ACSAuthorizationManager每次都会被自动执行验证过程。如下图:
CheckAccessCore会将刚刚放入请求头部的访问令牌取出,并验证令牌合法性,一旦通过验证,便会返回Client所请求的调用。
如果我们开放Get10DaysForecast的访问,那么SWT的值会有哪些变化呢?
参考步骤4.5 我们将Get10DaysForecast的访问打开。
调试程序后,查看acsToken的值,如下:
我们看到SWT令牌中action的值多了Get10DaysForecast一项。
更多精彩
赞助商链接