第三十七章 验证和解密入站消息
本主题介绍如何验证 IRIS Web
服务或 Web
客户端收到的消息中的安全元素(并自动解密任何加密内容)。
概述
IRIS
网络服务和网络客户端可以验证入站 SOAP
消息的 WS-Security
标头元素,以及自动解密入站消息。
IRIS Web
服务和 Web
客户端还可以处理已签名的 SAML
断言令牌并验证其签名。但是,验证 SAML
断言的详细信息是您的应用程序的责任。
如果使用安全策略,所有上述活动都是自动的。
在所有场景中,IRIS
都使用其根颁发机构证书集合;请参阅设置和其他常见活动。
验证 WS-Security
标头
要验证任何入站 SOAP
消息中包含的 WS-Security
标头元素,请执行以下操作:
- 在
Web
服务或Web
客户端中,设置SECURITYIN
参数。使用以下值之一:REQUIRE
—Web
服务或Web
客户端验证WS-Security
标头元素,如果不匹配或缺少此元素,则会发出错误。ALLOW
—Web
服务或Web
客户端验证 WS-Security
标头元素。
在这两种情况下,Web
服务或 Web 客户端都会验证 &<Timestamp>, <UsernameToken>, <BinarySecurityToken>, <Signature>, and <EncryptedKey>
标头元素。它还会验证标头中 SAML
断言中的 WS-Security
签名(如果有)。如果合适,还会解密消息。
如果验证失败,则返回错误。
SECURITYIN
参数还有两个可能的值,可用于测试和故障排除:
IGNORE
—Web
服务或客户端忽略除<UsernameToken>
之外的WS-Security
标头元素,如CSP
身份验证和WS-Security
中所述。
为了向后兼容,此值是默认值。
IGNOREALL — Web
服务或客户端忽略所有WS-Security
标头元素。
注意:如果关联(和编译)配置类中存在安全策略,则 SECURITYIN
参数将被忽略。
访问 WS-Security
标头中的 SAML
断言
如果 WS-Security
标头元素包含 <Assertion>
元素,则 IRIS Web
服务或 Web
客户端会自动验证该 SAML
断言的签名(如果已签名)。
注意:验证需要可信证书。如果 IRIS
可以验证签名者的证书链(从签名者自己的证书到 IRIS
信任的证书颁发机构 (CA
) 的自签名证书,包括中间证书(如果有),则它可以验证签名。
但是, IRIS
不会自动验证断言。代码应该检索断言并进行验证。
要访问 SAML
断言,请找到安全标头元素的 <Assertion>
元素。为此,请使用服务或客户端的 SecurityIn
属性的 FindElement()
方法,如下所示:
Set assertion=..SecurityIn.FindElement("Assertion")
这将中返回 %SAML.Assertion
的一个实例。根据需要检查此对象的属性。