第十一章 本地进程间通信(管道) - OPEN 命令管道示例
OPEN 命令管道示例
以下是有效的命令管道OPEN语句。每个示例指定 10 秒的超时:
以下是有效的命令管道OPEN语句。每个示例指定 10 秒的超时:
OPEN 命令OPEN命令允许程序与 IRIS 外部的进程进行通信。
OPEN Argumentscpipename 管道名称仅命令管道— “|CPIPE|”或"|CPIPE|xxxxxx" ,其中xxxxxx表示用户指定的唯一标识符。
program 程序命令管道可以使用命令 shell 或不使用命令 shell(直接)执行程序。在大多数情况下,首选不使用命令 shell 执行。标准管道使用命令 shell 执行程序。
仅命令管道— 要在不使用命令 shell 的情况下执行,请指定 /COMMAND= program 。如果程序有参数,则必须使用 /ARGS 关键字指定它们。如果指定 /COMMAND 或 /ARGS 关键字,则无需命令 shell 即可执行程序: (/COMMAND=program) 、 (/COMMAND=program:/ARGS=arg1)和(program:/ARGS=arg1)都是有效的语法。 /ARGS 可以采用单个参数、以逗号分隔的参数列表或数组。例如, (/COMMAND=program:/ARGS=arg1,arg2) 。可以使用数组指定可变数量的参数:
本页介绍如何通过管道与 IRIS® 数据平台外部的进程建立通信。
可以通过管道在 IRIS 进程和外部 UNIX® 或 Windows 进程之间进行通信,就像在 UNIX® 或 Windows 操作系统级别一样。可以将输出发送到管道或从管道接收输入。管道为单向;不能同时读取和写入同一个程序。
当打开另一个程序的管道进行输出时,可以像写入顺序文件一样对其进行写入。然后程序使用编写的内容作为其输入流。当希望 IRIS 进程与外部进程共享资源时,此功能特别有用。
IRIS 实用程序的管道可以打开通往 IRIS 实用程序以及 UNIX® 或 Windows 进程的管道。在将管道用于实用程序 I/O 之前,系统管理员必须在 IRIS 系统上定义管道设备。
系统管理员定义管道设备后,当运行实用程序(例如^%RD )时,可以使用系统管理员定义的助记符回答Device:提示。输出会自动发送到该设备。
IRIS 支持标准管道和命令管道 (CPIPE)。标准管道用于相对较短的命令字符串,其中命令名称及其参数少于 256 个字符。当命令字符串长度为 256 个字符或更长时,使用命令管道。在这两种情况下,管道只能在 UNIX® 和 Windows 系统上使用。
OPEN以下是标准管道的OPEN命令语法:
为了与其他 产品兼容并方便起见,可以通过设备编号(存储在设备表中)来引用设备。系统管理员可以使用管理门户将这些号码链接到设备。选择“系统管理” 、 “配置” 、 “设备设置” 、 “设备”以创建新设备或编辑现有设备。
系统管理员还可以将一个数字转换为另一个数字。因此,可以发出OPEN 47 , IRIS 会将其转换为OPEN 49 。
下表显示了设备编号。
| Device Numbers 设备编号 | Devices 设备 |
|---|---|
0 | 主要设备(您登录的设备)。 |
2 | IRIS 假脱机程序。 UNIX®:助记符 SPOOL 适用于该设备。 |
3 | 设备编号无效。尝试打开它会返回 <NOTOPEN> 错误,而不等待超时到期。 |
63 | 查看缓冲区。 |
20-46, 200-223 | 常规联锁装置。 |
224-255 | 作业间通信设备。 |
要打开假脱机程序,请发出以下命令:
OPEN 2
可以使用双引号括起来的操作系统文件规范来打开磁盘文件。
Windows 文件规范具有以下格式:
device:\directory\file.type
UNIX® 文件规范具有以下格式:
/directory/name
当使用 I/O 命令OPEN 、 USE和CLOSE在除正在使用的设备之外的任何设备上处理 I/O 时,必须指定一个 I/O 设备。可以根据设备类型以三种方式之一指定设备,如下表所示。
I/O 命令中指定设备| Type of Specification 规格类型 | Use for these Devices 用于这些设备 |
|---|---|
| IRIS 设备名称 | Terminals and Printers 终端和打印机 |
| IRIS 设备 ID 或设备别名 | 除顺序文件外的所有设备 |
| File Name 文件名 | Sequential Files 顺序文件 |
请注意,Windows 和 UNIX® 处理打印机I/O 的方式不同。有关详细信息,请参阅打印机。
如果的 I/O 操作是针对终端(或某些平台上的打印机),则可以使用操作系统(UNIX® 或 Windows)应用的设备名称来指定设备。形式如下:
OPEN "device"
USE "device"
CLOSE "device"
其中device是设备的操作系统名称,用引号引起来。设备的最大长度为 256 个字符。
Windows 系统上指定终端要打开连接到串行通信端口的 I/O 设备,请使用以下语法指定OPEN命令:
OPEN "comn:"
其中n表示设备所连接的端口号。
USE 0或USE $principal向进程的主体设备隐式发出OPEN命令。如果另一个进程拥有该设备,则该进程会挂在隐式OPEN上,就像它遇到任何OPEN时一样。
为该进程不拥有的任何其他设备(由于先前的OPEN命令)发出USE命令会产生错误。
仅当进程获取设备时,没有超时的OPEN命令才将控制权返回给进程。可以通过键盘中断命令(如Ctrl-C )中断打开命令。由于保护问题或无效设备名称而无法成功的OPEN将永远挂起。当在OPEN命令中指定超时时, OPEN将在超时到期时将控制权返回给进程。
根据主要设备的性质,可以指定其他特定于设备的参数,这些参数对于管道(进程间通信) 、文件和终端 I/O是不同的。例如,可以使用 TLS 连接打开主设备:
USE $principal:(::/TLS=ConfigName)
其中ConfigName是同一实例中定义的 TLS 配置的名称。
如果应用程序生成不希望出现在屏幕上的无关输出,可以将该输出定向到空设备。可以通过发出带有适当参数的 IRIS OPEN命令来指定空设备(见表)。 IRIS 将其视为虚拟设备。
| Platform 平台 | Null Device Argument 空设备参数 |
|---|---|
UNIX® | /dev/null/ |
Windows | //./nul |
一次只有一个进程可以拥有一个设备,顺序文件除外。
换句话说,在进程成功向设备发出OPEN命令后,在第一个进程释放该设备之前,其他进程都无法打开该设备。进程通过以下任一方式释放设备:
通过显式发出CLOSE命令。
通过停下来。
每个 IRIS 进程都有一个主要输入设备和一个主要输出设备。默认情况下,这些是同一设备。当您登录终端并激活 IRIS 时,该终端将成为主要设备。由于 IRIS 隐式向该终端发出OPEN和USE命令,因此可以立即向它发出READ和WRITE命令。 IRIS 主设备是操作系统指定为主输入设备的设备。 $PRINCIPAL特殊变量包含主设备的设备 ID。
IRIS 将 I/O 命令定向到当前设备IRIS 将输入和输出操作(包括READ 、 WRITE 、 PRINT和ZLOAD命令)定向到当前设备。 $I特殊变量包含当前设备的设备 ID。当在终端上登录 IRIS 时, $IO最初包含终端的设备名称。换句话说,登录后,主设备和当前设备是相同的。在发出USE命令后,当前的设备( $IO中包含的设备)通常是执行的最后一次USE命令中指定的设备。
Read 命令该命令从当前设备读取数据。对于某些设备,以星号开头的参数返回 ASCII 数字信息;对于其他人来说,它们表示控制功能。
READ variable:timeout
该命令将数据写入当前设备。对于某些设备,以星号开头的参数允许使用其 ASCII 数值写入 ASCII 字符;对于其他人来说,它们表示控制功能。对于某些设备,以 # 字符开头的参数指示写入该字符的次数。
WRITE variable
WRITE /mnemonicWRITE /mnemonic 语法允许使用在助记符空间中的 IRIS 代码中定义的助记符来控制设备。助记符空间是一个 IRIS 例程,必须在OPEN或USE命令中激活它,或者使用管理门户将其配置为设备的默认值。要了解如何定义和激活助记符空间,请参阅定义默认助记符空间。
要使用预定义的 ^%X364 助记符空间将光标移动到终端屏幕上的第 1 列第 2 行,请发出以下命令:
WRITE /CUP(1,2)
CLOSE 命令CLOSE命令释放指定设备的所有权。 CLOSE反转OPEN命令的效果。
CLOSE device[:params]
device所需的设备名称、ID 号或助记符。
params参数K在 IRIS 级别关闭设备,而不在操作系统级别关闭它。
此命令使指定设备成为当前设备,并将特殊变量$IO设置为该设备。要使用主设备以外的设备,必须首先对其发出OPEN命令;否则,将收到错误。参数的含义与OPEN命令中的相同。
USE device:(args):"mnespace"
所需的设备名称、ID 号或别名。设备的最大长度为 256 个字符。
可选— 某些设备所需的附加信息。管道(进程间通信) 、文件和终端 I/O的可用参数不同。
可选— IRIS 例程的名称,包含控制助记符的定义,当将 I/O 定向到该设备时,可以与WRITE /mnemonic 命令一起使用。
此 Windows 示例显示了用于通过 TCP 连接到远程主机larry上的时钟服务器的命令。它使用服务名称daytime ,本地系统将其解析为端口号。 USE命令用 PSTE 模式替换OPEN C 模式并关闭所有用户终止符:
OPEN "|TCP|4":("larry":"daytime":"C")
USE "|TCP|4":(::"PSTE")
UNIX® 上的使用示例此 UNIX 示例显示了用于打开设备/dev/tty06的 I/O 通道并将其建立为当前设备的命令,并可以选择使用WRITE /mnemonic 和 X364 终端助记符。
OPEN建立指定设备的所有权并打开指定设备的 I/O 通道。此所有权将持续存在,直到发出CLOSE命令、进程终止或某些物理操作关闭设备。对于物理 I/O 设备或进程间通信(例如 TCP 连接),此所有权会阻止所有其他进程访问该设备。对于逻辑 I/O 设备(例如顺序文件),此所有权可能允许其他进程以某种形式共享访问该文件。打开同一顺序文件的多个进程的处理高度依赖于平台。强烈建议使用LOCK命令来限制对顺序文件的访问。
OPEN device{:{(parameters)}{:{timeout}{:"mnespace"}}}
所需的设备名称、ID 号或助记符。设备的最大长度为 256 个字符。
可选— 一个或多个参数,指定某些设备所需的附加信息。该参数列表用括号括起来,列表中的参数之间用冒号分隔。管道(进程间通信) 、文件和终端 I/O的可用参数不同。
可选— 等待请求成功的秒数。前面的冒号是必需的。超时必须指定为整数值或表达式。如果超时设置为零 (0), OPEN将尝试打开文件一次。如果尝试失败, OPEN会立即失败。如果尝试成功,则成功打开文件。如果未设置超时 IRIS 将继续尝试打开设备,直到打开成功或手动终止该过程。
本页概括地描述了如何在 IRIS 数据平台应用程序中以及在 IRIS 提示符下使用 I/O 设备。
IRIS 数据平台为多种不同类型的逻辑和物理设备提供支持。支持的逻辑设备包括:
TCP连接IJC) 设备用于在 IRIS 进程之间进行通信支持的物理设备包括
I/O 命令概述I/O 命令允许拥有、使用、读取、写入和关闭设备。要将 I/O 操作定向到设备,请首先发出以下命令:
OPEN命令来建立所有权,除非该设备是主要设备。USE命令使该设备成为当前设备。READ和WRITE命令将从该设备读取或写入该设备。CLOSE命令释放设备的所有权,以便其他进程可以使用该设备。以下通用语法适用于支持 ObjectScript 中 I/O 命令关键字的 I/O 命令:
OPEN device:paramlist:timeout:"mnespace"
USE device:paramlist:"mnespace"
CLOSE device:paramlist
其中paramlist可以是单个参数,也可以是括在括号中并用冒号分隔的参数列表:
本节讨论在消息头中用作 <Security>子元素的 <ReferenceList> 元素。当以这种方式使用 <ReferenceList> 时,可以在签名之前执行加密。以下显示了此元素的一个示例:
<ReferenceList xmlns="http://www.w3.org/2001/04/xmlenc#">
<DataReference URI="#Enc-358FB189-81B3-465D-AFEC-BC28A92B179C"></DataReference>
<DataReference URI="#Enc-9EF5CCE4-CF43-407F-921D-931B5159672D"></DataReference>
</ReferenceList>
在每个 <DataReference> 元素中,URI 属性指向消息中其他位置的 <EncryptedData> 元素的 Id 属性。
使用顶级 <ReferenceList> 元素时,<EncryptedKey> and <EncryptedData> 的详细信息有所不同,如下所示:
<DerivedKeyToken> 的目的是携带发送者和接收者可以独立使用的信息来生成相同的对称密钥。这些方可以使用该对称密钥对 SOAP 消息的相关部分进行加密、解密、签名和签名验证。
以下显示了部分示例:
<Signature>的目的是携带可由消息接收者验证的数字签名。可以使用数字签名来检测消息更改,或者只是验证消息的某个部分是否确实由列出的实体生成。与传统的手写签名一样,数字签名是对文档的附加,只能由文档的创建者创建,并且不易伪造。
以下显示了部分示例:
<EncryptedData> 的作用是携带加密数据,部分示例如下:
<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#"
Id="Enc-143BBBAA-B75D-49EB-86AC-B414D818109F"
Type="http://www.w3.org/2001/04/xmlenc#Content">
<EncryptionMethod Algorithm="[parts omitted]#aes128-cbc"></EncryptionMethod>
<CipherData>
<CipherValue>MLwR6hvKE0gon[parts omitted]8njiQ==</CipherValue>
</CipherData>
</EncryptedData>
该元素的各部分如下:
该元素的各部分如下:
<EncryptionMethod> 表示用于加密对称密钥的算法。在 IRIS 中,可以指定密钥传输算法(由 <EncryptionMethod> 的 Algorithm 属性显示)。请参阅指定密钥传输算法。
<KeyInfo> 标识用于加密此对称密钥的密钥。在 IRIS 中,<KeyInfo> 包含 <SecurityTokenReference>,其具有以下形式之一:
WS-Security 标头中较早位置的 <BinarySecurityToken> 的引用,如前面的示例所示。<SecurityTokenReference> 可以包含证书的 SHA1 指纹,如下所示:本主题讨论 SOAP 消息中较常见的安全元素,特别是 IRIS Web 服务和客户端可以发送的变体。此信息旨在帮助那些不经常使用 SOAP 的人重温记忆。此处的详细信息也可能有助于故障排除。
<BinarySecurityToken><BinarySecurityToken> 的目的是携带消息中其他元素使用的安全凭证,供消息接收者使用。安全凭证以序列化、编码的形式携带。以下显示了部分示例:
<BinarySecurityToken wsu:Id="SecurityToken-4EC1997A-AD6B-48E3-9E91-8D50C8EA3B53"
EncodingType="[parts omitted]#Base64Binary"
ValueType="[parts omitted]#X509v3">
MIICnDCCAYQ[parts omitted]ngHKNhh
</BinarySecurityToken>
该元素的各部分如下:
本节讨论 IRIS Web 服务和 Web 客户端中可能出现的与安全相关的错误:
IRIS Web 服务或客户端,则可能尚未配置为识别 WS-Security 标头。在这种情况下,当您尝试执行 Web 方法时,会收到如下一般错误:<ZSOAP>zInvokeClient+269^%SOAP.WebClient.1
将以下内容添加到Web服务或客户端并重新编译:
Parameter SECURITYIN="REQUIRE";
这种一般错误也可能是由于错误地调用 Web 方法(例如,在 Web 方法没有返回值时引用返回值)造成的。
如果使用 WS-Policy,则此项不适用。
Web 方法时,可能会收到以下安全错误:ERROR #6454: No supported policy alternative in configuration
Policy.Client.Demo1SoapConfig:service
SOAP 日志会指出这一点。例如:本主题提供信息来帮助识别 IRIS 中 SOAP 安全问题的原因。
有关与安全无关的问题的信息,请参阅 IRIS 中的 SOAP 问题故障排除。
要解决 SOAP 问题,通常需要以下信息:
WSDL 及其引用的所有外部文档。| Option | Usable with SSL/TLS? | Shows HTTP headers? | Comments |
|---|---|---|---|
| IRIS SOAP log | Yes | No | 对于安全错误,此日志显示的详细信息比 SOAP 故障中包含的更多。 |
| Web Gateway trace | Yes | Yes | 对于使用 MTOM(MIME 附件)的 SOAP 消息问题,查看 HTTP 标头至关重要。 |
| Third-party tracing tools | No | Depends on the tool | 一些跟踪工具还显示较低级别的详细信息,例如实际发送的数据包,这在进行故障排除时至关重要。 |
这 IRIS 中的 SOAP 问题故障排除中进行了讨论。
SOAP 客户端会使用 `HTTP 身份验证,请注意,可以启用身份验证的日志记录;请参阅提供登录凭据。正确处理故障也非常有用,这样就可以收到最好的信息。请参阅 SOAP 故障处理。
<SubjectConfirmation>与 <EncryptedKey>要添加带有 <SubjectConfirmationData>(其中包含 <EncryptedKey> 元素)的 <SubjectConfirmation>,请执行以下操作:
%SYS.X509Credentials 的实例。或者使用与签署断言时使用的相同凭证集。
SAML 断言对象的 Subject 属性的 NameID 属性。SAML 断言对象的 Subject 属性的 AddEncryptedKeyConfirmation() 方法。method AddEncryptedKeyConfirmation(credentials As %X509.Credentials) as %Status
对于参数,请使用之前创建的 %SYS.X509Credentials实例。
<SubjectConfirmation> 以 BinarySecret 作为密钥持有者要添加以 BinarySecret 作为 Holder-of-key 的 <SubjectConfirmation>,请执行以下操作:
SAML 断言时,请按如下方式创建签名:<Subject>元素要将 <Subject> 元素添加到 %SAML.Assertion 实例,执行以下操作:
%SAML.Subject 的新实例。Subject 属性设置为等于此实例。<SubjectConfirmation> 元素要将 <SubjectConfirmation> 元素添加到的 %SAML.Assertion 实例,请使用以下某个小节中的步骤。
<SubjectConfirmation>使用方法 Holder-of-key要使用 Holder-of-key 方法添加 <SubjectConfirmation>,请执行以下操作:
%SYS.X509Credentials 的实例。或者使用与签署断言时使用的相同凭证集。
要创建令牌,调用 %SOAP.Security.BinarySecurityToken 的 CreateX509Token() 类方法。例如:
<BinarySecurityToken><BinarySecurityToken> 包含序列化、base-64 编码格式的证书。可以忽略此令牌,而改用标识证书的信息;接收方使用此信息从相应位置检索证书。为此,请使用上述步骤,并进行以下更改:
2 和 3。也就是说,不要创建和添加 <BinarySecurityToken>.。4 中,使用凭证集(而不是二进制安全令牌)作为 CreateX509() 的第一个参数。例如: set assertion=##class(%SAML.Assertion).CreateX509(credset,referenceOption)
对于 referenceOption,可选择指定一个值,如 X.509 凭证的参考选项中所述。可以使用除 $$$SOAPWSReferenceDirect 之外的任意值。
如果指定凭证集作为第一个参数(正如我们在这个变体中所做的那样),则默认引用选项是证书的指纹。
要创建未签名的 SAML 断言,请使用上述步骤,并进行以下更改:
本主题描述如何将SAML 令牌添加到 WS-Security 标头元素。
另请参阅 %SAML.Assertion 的类参考和相关类。
未实现完整的 SAML 支持。 IRIS 中的 SAML 支持仅指 IRIS 中的 WS-Security 支持中列出的详细信息。
借助 IRIS SOAP 支持,可以将 SAML 令牌添加到 WS-Security 标头元素。
可以选择将此 SAML 令牌用作签名或加密的密钥材料。如果这样做, IRIS 将遵循 WS-Security SAML 令牌配置文件规范。密钥材料来自 SAML 断言的 <SubjectConfirmation> 元素(带有 Holder-of-key (HOK) 方法)和 <SubjectConfirmationData> 或 <KeyInfoConfirmationData>(带有 <KeyInfo> 子元素)。
或者,可以使用 Sender-vouches (SV) 方法添加 <SubjectConfirmation>;在这种情况下,主题不包含密钥。为了保护这种情况下断言,建议您添加从消息签名到 SAML 令牌的安全令牌引用。
要创建 SAML 令牌并将其添加到出站 SOAP 消息,可以使用此处的基本过程或小节中描述的变体。
WS-ReliableMessaging 标头进行签名可以通过以下任一方式签署 WS-ReliableMessaging 标头。
SecurityContextToken 对标头进行签名如果还使用 WS-SecureConversation,则 Web 客户端的 SecurityContextToken 属性包含一个对称密钥,可以使用该密钥对 WS-ReliableMessaging 标头元素进行签名。为此,请在调用 %SOAP.RM.CreateSequence实例的 AddSTR() 方法,并将 SecurityContextToken 属性作为参数传递:
do createsequence.AddSTR(client.SecurityContextToken)
在调用 %StartRMSession() 之前执行此操作。
IRIS 支持 WS-ReliableMessaging 规范的部分内容,如简介中所述。此规范提供了一种按顺序可靠地传递一系列消息的机制。本页介绍如何手动使用可靠消息传递。
Web 客户端发送一系列消息要将一系列消息从 IRIS Web 客户端可靠地发送到支持 WS-ReliableMessaging 的 Web 服务,请执行以下操作:
Web 客户端的安全标头元素。如果正在使用 WS-SecureConversation,请启动安全对话。
%SOAP.RM.CreateSequence的 Create() 类方法。这将返回该类的一个实例。此方法具有以下签名:
在 Web 服务使用 <SecurityContextToken>, 做出响应后,客户端实例和服务实例可以访问相同的对称密钥。有关此密钥的信息包含在两个实例的 SecurityContextToken 属性中。建议的程序如下:
SecurityOut 属性设置为 null,以删除请求消息中使用的安全标头。在 Web 服务中不需要这样做,因为 Web 服务会在每次调用后自动清除安全标头。
<SecurityContextToken> 添加到 WS-Security 标头元素。为此,请调用 Web 客户端或 Web 服务的 SecurityOut 属性的 AddSecurityElement() 方法。例如: set SCT=..SecurityContextToken
do ..SecurityOut.AddSecurityElement(SCT)
如果在下一步创建派生密钥令牌时使用 $$$SOAPWSReferenceSCT 引用选项,则此步骤是必需的。否则,此步骤不是必需的。
<SecurityContextToken>创建一个新的 <DerivedKeyToken> 。为此,调用 %SOAP.WSSC.DerivedKeyToken 的 Create() 方法,如下所示:IRIS Web 服务以支持 WS-SecureConversation当 Web 客户端向 Web 服务发送请求安全对话的消息时,安全对话就开始了。作为响应,Web 服务发送双方都可以使用的 <SecurityContextToken>。
要使 IRIS Web 服务能够使用此令牌进行响应,请重写 Web 服务的 OnStartSecureConversation() 方法。此方法具有以下签名:
Method OnStartSecureConversation(RST As %SOAP.WST.RequestSecurityToken) As
%SOAP.WST.RequestSecurityTokenResponseCollection
该方法应该执行以下操作:
SOAP 主体。OnStartSecureConversation() 发送的消息包含必须保护的信息;此信息在 SOAP 主体中携带。根据需要,可以选择采用其他方式保护消息安全。
IRIS 支持安全对话,遵循 WS-SecureConversation 1.3 规范。本页介绍如何手动创建安全对话。
在安全对话中,Web 客户端向 Web 服务发出初始请求并接收包含 <SecurityContextToken> 的消息。此元素包含双方都可以使用的对称密钥的信息。此信息指的是只有双方知道的共享密钥。然后双方可以在后续交换中使用对称密钥,直到令牌过期或客户端取消令牌。
双方不应该直接使用 <SecurityContextToken> 执行这些任务(不推荐),而应该从中生成一个 <SecurityContextToken>,然后使用它进行加密、签名、解密和签名验证。
共享密钥可以通过以下任一方式指定:
Web 客户端启动安全对话。要在 IRIS 中执行此操作,请在 Web 客户端中执行以下操作:
SOAP 主体。客户端发送的请求包含必须保护的信息;此信息在 SOAP 主体中携带。根据需要,可以选择采用其他方式保护请求消息。
%SOAP.WST.Entropy的 CreateBinarySecret() 方法。此方法返回表示随机客户端熵的该类的实例。该方法接受一个参数,即熵的大小(以字节为单位)。WS-Security了解 IRIS 网络服务有两个独立的机制在起作用是很有用的:IRIS 服务器和网络服务代码。
Web 应用程序指定允许的身份验证模式,从而控制对 %Service_WebGateway 服务的访问。(有关详细信息,请参阅时间戳和用户名令牌示例。有关更多背景信息,请参阅 Web 应用程序。)如果您选择密码选项,则 Web 应用程序可以接受 IRIS 用户名/密码对;这称为实例身份验证。Web 服务还可以要求 IRIS 用户名/密码对。这些机制协同工作如下:
Web 服务将检查是否存在名为 <Security> 的标头元素,而不会检查该元素的内容。<Security>标头元素并且 SECURITYIN 参数等于 REQUIRE,则 Web 服务将发出故障并退出。<Security> 标头元素包含<UsernameToken> 元素:Web 应用程序选择了密码选项,则 Web 服务将读取 <UsernameToken>元素,从中获取用户名和密码,并登录到 Web 应用程序。Web 服务对 SECURITYIN 参数的任何值(IGNOREALL 除外)都执行此操作。
本主题介绍如何验证 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 标头元素。