增强服务编程
安全策略
虽然以上讨论的代码与 WSE 1.0 中的代码非常相似,但它具有一个优点:将 Principal 对象与一个令牌关联,可以用来查找某个具体安全令牌的特定属性。这种方法存在的问题在于仍要编写代码来确定应属于管理任务的访问功能。为此,WSE 2.0 提供了创建策略文件支持。
策略文件基于 WS-Policy 规范,该规范是为允许 Web 服务声明传入消息有关安全性等方面的要求而创建的。如果希望签名或者加密所有或部分消息,WSE 2.0 允许我们控制 Web 服务的用户在消息中使用的安全令牌类别,以及控制对接收消息时限的限制,甚至可以为传入的消息指定角色成员限制。
以下策略文件说明 Web 服务接收的消息应使用 Kerberos 令牌对消息主体进行签名。
<?xml version=\"1.0\" encoding=\"utf-8\"?>
<policyDocument
xmlns=\"\">
<mappings
xmlns:wse=\"\">
<mapDefault
policy=\"#policy-5903e02b-9cdccad4e9d0bcde\" />
</mappings>
<policies
xmlns:wsu=\"\">
<wsp:Policy
wsu:Id=\"policy-5903e02b-9cdccad4e9d0bcde\"
xmlns:wsp=\"\">
<wsse:Integrity wsp:Usage=\"wsp:Required\"
xmlns:wsse=\"\">
<wsse:TokenInfo>
<SecurityToken
xmlns=\"\">
<wsse:TokenType>wsse:Kerberosv5ST</wsse:TokenType>
</SecurityToken>
</wsse:TokenInfo>
<wsse:MessageParts
Dialect=\"\">
wsp:Body()
</wsse:MessageParts>
</wsse:Integrity>
</wsp:Policy>
</policies>
</policyDocument>
policyDocument 根元素有两个子元素:mappings 和 policies。policies 元素含有一个或多个表示特定要求集的 Policy 元素。在示例中,策略包含一个 Integrity 要求,表示该消息需要数字签名。TokenInfo 元素包含关于所需令牌种类的信息,本示例中为 Kerberos 令牌。最后,这一特定完整性要求指出必须签名的文档部分为正文,这是使用 MessageParts 元素指示的。
policyDocument 的 mappings 部分仅将特定终结点与 policies 部分中的策略关联。本示例不包括特定终结点的任何映射,仅包括单一的默认映射。
除了实际创建策略文件以外,还需要让 WSE 程序库知道该策略的存在。因此,有必要配置 Web 服务以使用创建的策略文件。为此,需要修改 nfig 文件。下面的 nfig 文件给出了为启用 WSE SoapExtension、启用 WSE 配置部分中的处理程序以及添加接收策略缓存而作的更改。
率军万人 <?xml version=\"1.0\" encoding=\"utf-8\"?>
<configuration>
<configSections>
<!-- 添加对配置部分的引用。 请注意,
类型名称要换行以便于阅读,并且不应包含
换行符。-->
<section name=\"rvices\"
type=\"nfiguration
.WebServicesConfiguration, rvices,
Version=2.0.0.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35\" />
</configSections>
<b>
<!-- 为了简洁,删除其他元素 -->
<webServices>
<soapExtensionTypes>
<!-- 添加 WSE SoapExtension。请注意,
类型名称要换行以便于阅读并且
不应包含换行符。-->
<add type=\"rvices
.WebServicesExtension, rvices,
Version=2.0.0.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35\"
priority=\"1\" group=\"0\" />
</soapExtensionTypes>
</webServices>
</b>
<!-- WSE Configuration Section -->
<rvices>
<policy>
<receive>
<cache name=\"l\" />
</receive>
</policy>
</rvices>
</configuration>
至此,已将 Web 服务配置成只接受符合 l 文件中策略要求的请求。
如果需要让管理员为特定的 Web 服务配置策略,我们同样希望对使用 Web 服务的应用程序进行类似配置。总而言之,如果管理员更改策略后我们必须重新生成使用的应用程序,则并没有完全实现配置消息要求时无需重新生成 Web 服务的功能。
要为使用的应用程序添加该功能来发送符合特定策略的消息,需要本地具有该程序可以使用的策略文件。对于要调用 .asmx Web 服务的 Rock Paper Scissors 对等应用程序,我们只是将 l 文件复制到该可执行程序的工作目录。如同对 Web 服务的处理,将该应用程序配置成使用其 .config 文件中的策略文件(本示例中为 nfig)。该配置文件如下所示。
<?xml version=\"1.0\" encoding=\"utf-8\"?>
<configuration>
<configSections>
<!-- 添加对配置部分的引用。请注意,
类型名称要换行以便于阅读,并且不应包含
换行符。-->
<section name=\"rvices\"
type=\"rvices.
bServicesConfiguration,
rvices, Version=2.0.0.0,
Culture=neutral, PublicKeyToken=31bf3856ad364e35\" />
</configSections>
<rvices>
<policy>
<send>
<cache name=\"l\" />
</send>
</policy>
</rvices>
</configuration>
对等应用程序将通过发送符合 l 文件中的要求的消息与 Web 服务进行通信。
宝鸡哪个医院治疗白癜风最好重庆哪家医院白癜风好
江门哪看癫痫好
- 小米MIUI再次更新进展:看似都是无关紧要的关键问题,但实际却很关键
- 一个有财多金,一个年轻俊朗,两男共享一位妻子,却22年不曾发现
- 伤害你越深的人,会让你更加越好
- 恒瑞医药:SHR4640片获药物临床试验批准后通知书
- 光明大力锻造一支能力格局与科学城建设相匹配的生态村干部队伍
- 王诗龄晒自拍照,却碰巧曝光豪华客厅,单一个永生花熊就近9万!
- 搞笑无厘头:去应聘,到了经理那一关,经理幽幽的说认识我爸…
- 鞠婧祎舞台彩排被拍,怼脸照眼球却出“状况”,难怪用刘海遮挡
- “夫妻感情好不好,三件难免见分晓”
- 红薯最好吃的5种做法,简便4步,香甜软糯,营养高,全家都爱吃
- 怪不得七鹤大人只晒半身照,当全身图被扒出,身高成最大的大!
- 舒淇晒生日照,周迅穿丝袜不俗挺优雅,舒淇素颜还有斑!