第三十八章 验证和解密入站消息 - 实例身份验证和 WS-Sec

2024-10-03  本文已影响0人  Cache技术分享

第三十八章 验证和解密入站消息 - 实例身份验证和 WS-Security

实例身份验证和 WS-Security

了解 IRIS 网络服务有两个独立的机制在起作用是很有用的:IRIS 服务器和网络服务代码。

这些机制协同工作如下:

  1. 收到消息后,Web 服务将检查是否存在名为 <Security> 的标头元素,而不会检查该元素的内容。
  2. 如果不存在 <Security>标头元素并且 SECURITYIN 参数等于 REQUIRE,则 Web 服务将发出故障并退出。
  3. 如果<Security> 标头元素包含<UsernameToken> 元素:

Web 服务对 SECURITYIN 参数的任何值(IGNOREALL 除外)都执行此操作。

用户名可在 $USERNAME 特殊变量和 Web 服务的 Username 属性中找到。密码不可用。

注意:如果关联(和编译)配置类中存在安全策略,则 SECURITYIN 参数将被忽略。

检索安全标头元素

在某些情况下,可能希望为 WS-Security 标头元素添加自定义处理。为此,请使用 Web 服务或客户端的 SecurityIn 属性。如果服务或客户端收到 WS-Security 标头元素,则此属性是包含标头元素的 %SOAP.Security.Header 实例。例如:

 Set secheader=myservice.SecurityIn

然后使用该实例的以下方法之一来检索标题元素:

FindByEncryptedKeySHA1()

method FindByEncryptedKeySHA1(encryptedKeySHA1 As %Binary) as %SOAP.Security.Element

从与给定 EncryptedKeySHA1 参数对应的 <EncryptedKey> 元素中返回密钥。如果没有匹配,则返回空字符串。

FindElement()

method FindElement(type As %String, ByRef pos As %String) as %SOAP.Security.Element

返回位置 pos 之后的第一个指定类型的安全元素。如果没有匹配,该方法将返回空字符串(并将 pos 返回为 0)。

对于类型,指定“Timestamp”、“BinarySecurityToken”、“UsernameToken”、“Signature”或“EncryptedKey”

FindLastElement()

method FindLastElement(type As %String, ByRef pos As %String) as %SOAP.Security.Element

返回指定类型的最后一个安全元素。如果没有匹配,该方法将返回空字符串(并将 pos 返回为 0)。

有关类型的信息,请参阅 FindElement() 的条目。

所有这些方法都会中返回 %SOAP.Security.Element 的实例或以下子类之一的实例,具体取决于元素类型:

Element Type Subclass Used
"Timestamp" %SOAP.Security.Timestamp
"BinarySecurityToken" %SOAP.Security.BinarySecurityToken
"UsernameToken" %SOAP.Security.UsernameToken
"Signature" %XML.Security.Signature

检查签名确认

WS-Security 1.1 <SignatureConfirmation>功能使 Web 客户端能够确保收到的 SOAP 消息是响应 Web 客户端发送的原始请求而生成的。客户端请求通常经过签名,但并非必须如此。在此机制中,Web 服务将 <SignatureConfirmation> 元素添加到安全标头元素,Web 客户端可以检查该 <SignatureConfirmation>元素。

对于 Web 客户端,要验证从 Web 服务收到的响应中的 <SignatureConfirmation> 元素,请调用 Web 客户端的 WSCheckSignatureConfirmation() 方法。如果 <SignatureConfirmation> 元素有效,则此方法返回 true,否则返回 false

上一篇下一篇

猜你喜欢

热点阅读