第四十四章 创建和添加 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 消息,可以使用此处的基本过程或小节中描述的变体。
- 可选择包含
%soap.
本演示程序用于展示如何采用自定义FHIR profile来验证数据合规性。自定义FHIR实施指南基于FHIR R4版本开发,在本例中实现了对Organization资源的扩展并用于验证数据的合规性。
安装
- 通过Git clone下载本项目。
- 执行docker-compose up -d构建并启动容器,初次执行时需执行需10~15分钟(视配置变化)。将构建InterSystems IRIS for Health镜像,安装FHIR服务器,导入自定义FHIR规范,使自定义FHIR 规范可用于验证数据。
- 在Postman中导入TestCases中的测试用例文件,查看各类FHIR约束的测试效果
- 容器启动后可查看自定义IG内容
项目代码结构
FHIRValidation
├─ ExampleIG
│ ├─ ig.ini
│ ├─ input
│ │ ├─ fsh
│ │ │ ├─ alias.fsh
│ │ │ ├─ codesystems.fsh
│ │ │ ├─ organization.fsh
│ │ │ └─ valuesets.fsh
│ │ └─ pagecontent
│ │ └─ index.md
│ └─ sushi-config.yaml
├─ README.第四十三章 使用 WS-ReliableMessaging - 对 WS-ReliableMessaging 标头进行签名
对 WS-ReliableMessaging 标头进行签名
可以通过以下任一方式签署 WS-ReliableMessaging 标头。
使用 SecurityContextToken 对标头进行签名
如果还使用 WS-SecureConversation,则 Web 客户端的 SecurityContextToken 属性包含一个对称密钥,可以使用该密钥对 WS-ReliableMessaging 标头元素进行签名。为此,请在调用 %SOAP.RM.CreateSequence实例的 AddSTR() 方法,并将 SecurityContextToken 属性作为参数传递:
do createsequence.AddSTR(client.SecurityContextToken)
在调用 %StartRMSession() 之前执行此操作。
签署消息时签署标头
还可以使用与签署消息其余部分相同的方式签署 WS-ReliableMessaging 标头。为此,在调用 %XML.Signature 的 Create() 或 CreateX509() 方法时,将值 $$$SOAPWSIncludeRMHeaders 添加到 signatureOptions 参数。
Foreign Table 的概念
Foreign Table 是 IRIS SQL 中一种特殊类型的表。它不代表 IRIS 本地全局管理的数据,而是投射出来的,由 “外部服务器 ”管理的外部数据。从 SQL 的角度来看,外部表与普通表一样,可以在查询中使用,没有任何特定限制。
在数据编织中可以帮助整合不同的来源的数据,以支持各种应用、分析并提供智能洞察力。
Foreign Table 和 Linked Table 的区别
Linked Table
- Lined Table 不能读取外部文件
- 对于 JDBC 和 ODBC 的数据源是分开的
Foreign Table
- 可以读取外部文件
- 不局限于同一类型的数据源
Foreign Table 的用例
- 当某个数据集时由外部应用程序在外部数据库中管理,而你的 IRIS 查询需要在该外部数据集中查找某些内容时,您可以使用某种 ETL 流程将数据加载到 IRIS 中,但如果外部数据经常更新,而你的查询需要访问当前的版本,那么这个过程可能会变得很棘手。可以通过 Foreign Table 将数据投射到 IRIS 并在查询时从外部源检索当前数据来解决这个问题。
- 当您要使用某些基于文件的大型数据集,您只需要偶尔查询一下,用来建立报告或训练模型。
各位社区成员,大家好!
我们想念 Global Masters,相信你们也是!
🚀 Global Masters 将于 2024 年 10 月 3 日再次启动!

第四十二章 使用 WS-ReliableMessaging
IRIS 支持 WS-ReliableMessaging 规范的部分内容,如简介中所述。此规范提供了一种按顺序可靠地传递一系列消息的机制。本页介绍如何手动使用可靠消息传递。
从 Web 客户端发送一系列消息
要将一系列消息从 IRIS Web 客户端可靠地发送到支持 WS-ReliableMessaging 的 Web 服务,请执行以下操作:
- 根据需要指定
Web客户端的安全标头元素。
如果正在使用 WS-SecureConversation,请启动安全对话。
- 调用
%SOAP.RM.CreateSequence的Create()类方法。这将返回该类的一个实例。
此方法具有以下签名:
classmethod Create(addressingNamespace As %String,
oneWay As %Boolean = 0,
retryInterval As %Float = 1.0,
maxRetryCount As %Integer = 8,
expires As %xsd.挑战
在使用FHIR进行开发的过程中,我们会面对海量的FHIR规范中定义的数据结构,具体来说在FHIR规范中定义了超过150个资源、700多个资源内元素。每个定义里都包括了对自身结构的描述以及数据约束、数据绑定值集等。对于一个开发人员要记住这些内容非常困难。
同时FHIR数据,特别是Json格式的FHIR数据是典型的“有向图”结构,它的资源中嵌套元素定义、集合以及复杂的资源间“关系”,在这些复杂结构的数据间导航并操作,非常困难。
.png)
解决方案
在InterSystems IRIS for Health 2024.1之前,我们会将FHIR数据以Json文档的方式载入 %DynamicAbstractObject,例如下面的代码
set dynObject1 = ##class(%DynamicObject).%New()
set dynObject1.SomeNumber = 42
set dynObject1.SomeString = "a string"
set dynObject1.SomeArray = ##class(%DynamicArray).%New()
set dynObject1.SomeArray."0" = "an array element"
set dynObject1.SomeArray.我们最近在向量搜索抢险体验计划中提供了新版的 InterSystems IRIS,新版本采用了新的基于分层可导航小世界 (HNSW) 索引算法的近似最近邻索引。 这一新增功能可对大型向量数据集进行高效的近似最近邻搜索,从而显著提高查询性能和可扩缩性。
HNSW 算法旨在通过构建基于图形的结构来优化高维数据的向量搜索,从而更快地在大型向量集合中找到近似邻。 无论您使用的是推荐系统、自然语言处理,还是其他机器学习应用,HNSW 都能显著缩短搜索时间,同时允许您调整准确度水平,但准确度提高的代价是查询时间变慢。
HNSW 的主要优点包括:
• 即使数据集规模不断扩大,也能加快搜索速度
• 减少内存占用,同时保持高准确度
• 与现有的 IRIS 向量搜索功能无缝集成
如何开始使用
最新版本现已通过向量搜索抢先体验计划提供。 要参与,请在此处注册,下载新版本并开始测试。 我们正在持续增强向量搜索的功能,因此您的反馈至关重要!
我们鼓励您探索性能改进方法,并与社区分享您的想法。 如果您在抢先体验阶段遇到任何问题或有任何反馈,请联系我。
祝您编码愉快!
第四十一章 创建安全对话 - 使用
在 Web 服务使用 , 做出响应后,客户端实例和服务实例可以访问相同的对称密钥。有关此密钥的信息包含在两个实例的 SecurityContextToken 属性中。建议的程序如下:
- 在客户端中,将
SecurityOut属性设置为null,以删除请求消息中使用的安全标头。
在 Web 服务中不需要这样做,因为 Web 服务会在每次调用后自动清除安全标头。
- (可选)将
添加到WS-Security标头元素。为此,请调用Web客户端或Web服务的SecurityOut属性的AddSecurityElement()方法。例如:
set SCT=..SecurityContextToken
do ..SecurityOut.AddSecurityElement(SCT)
如果在下一步创建派生密钥令牌时使用 $$$SOAPWSReferenceSCT 引用选项,则此步骤是必需的。否则,此步骤不是必需的。
- 根据
创建一个新的。为此,调用%SOAP.WSSC.DerivedKeyToken的Create()方法,如下所示:
set dkenc=##class(%SOAP.WSSC.第四十章 创建安全对话 - 启用 IRIS Web 服务以支持 WS-SecureConversation
启用 IRIS Web 服务以支持 WS-SecureConversation
当 Web 客户端向 Web 服务发送请求安全对话的消息时,安全对话就开始了。作为响应,Web 服务发送双方都可以使用的 。
要使 IRIS Web 服务能够使用此令牌进行响应,请重写 Web 服务的 OnStartSecureConversation() 方法。此方法具有以下签名:
Method OnStartSecureConversation(RST As %SOAP.WST.RequestSecurityToken) As
%SOAP.WST.RequestSecurityTokenResponseCollection
该方法应该执行以下操作:
- 加密
SOAP主体。OnStartSecureConversation()发送的消息包含必须保护的信息;此信息在SOAP主体中携带。
根据需要,可以选择采用其他方式保护消息安全。
- (可选)调用
%SOAP.WST.Entropy的CreateBinarySecret()方法。此方法返回表示随机服务器熵的该类的实例。该方法接受一个参数,即熵的大小(以字节为单位)。
第三十九章 创建安全对话
IRIS 支持安全对话,遵循 WS-SecureConversation 1.3 规范。本页介绍如何手动创建安全对话。
概述
在安全对话中,Web 客户端向 Web 服务发出初始请求并接收包含 <`SecurityContextToken>` 的消息。此元素包含双方都可以使用的对称密钥的信息。此信息指的是只有双方知道的共享密钥。然后双方可以在后续交换中使用对称密钥,直到令牌过期或客户端取消令牌。
双方不应该直接使用 执行这些任务(不推荐),而应该从中生成一个 ,然后使用它进行加密、签名、解密和签名验证。
共享密钥可以通过以下任一方式指定:
- 双方共同提供随机熵值。这是典型的情况。
- 由客户端,如果客户端提供了一个随机的客户端熵值。
- 由服务提供,如果服务提供了随机的服务熵值。
开始安全对话
Web 客户端启动安全对话。要在 IRIS 中执行此操作,请在 Web 客户端中执行以下操作:
- 加密
SOAP主体。客户端发送的请求包含必须保护的信息;此信息在SOAP主体中携带。
根据需要,可以选择采用其他方式保护请求消息。
- 在调用
%SOAP.WST.Entropy的CreateBinarySecret()方法。此方法返回表示随机客户端熵的该类的实例。该方法接受一个参数,即熵的大小(以字节为单位)。
set clientEntropy=##class(%SOAP.第三十八章 验证和解密入站消息 - 实例身份验证和 WS-Security
实例身份验证和 WS-Security
了解 IRIS 网络服务有两个独立的机制在起作用是很有用的:IRIS 服务器和网络服务代码。
- 在管理门户中,您可以为
Web应用程序指定允许的身份验证模式,从而控制对%Service_WebGateway服务的访问。(有关详细信息,请参阅时间戳和用户名令牌示例。有关更多背景信息,请参阅Web应用程序。)如果您选择密码选项,则 Web 应用程序可以接受IRIS用户名/密码对;这称为实例身份验证。 - 除此之外,
Web服务还可以要求IRIS用户名/密码对。
这些机制协同工作如下:
- 收到消息后,
Web服务将检查是否存在名为的标头元素,而不会检查该元素的内容。 - 如果不存在
标头元素并且SECURITYIN参数等于REQUIRE,则Web服务将发出故障并退出。 - 如果
标头元素包含元素:
- 如果为
Web应用程序选择了密码选项,则Web服务将读取元素,从中获取用户名和密码,并登录到Web应用程序。
Web 服务对 SECURITYIN 参数的任何值(IGNOREALL 除外)都执行此操作。
用户名可在 $USERNAME 特殊变量和 Web 服务的 Username 属性中找到。密码不可用。
- 如果没有选择密码选项,则不会登录。
– 4个新公告
– 2个新问题
✓ 九月有 47 位新成员加入
✓ 所有时间发布了 2,208 篇帖子
✓ 所有时间有 2,024 位成员加入
第三十七章 验证和解密入站消息
本主题介绍如何验证 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 客户端都会验证 & 标头元素。它还会验证标头中 SAML 断言中的 WS-Security 签名(如果有)。如果合适,还会解密消息。
如果验证失败,则返回错误。
第三十六章 结合加密和签名 - 使用对称密钥签名并加密
使用对称密钥签名并加密
签名然后加密(使用对称密钥时):
- 按照使用
进行加密中的步骤进行操作。 - 按照使用
进行签名中的步骤进行操作。
使用元素
以下示例使用对称密钥进行签名和加密。它使用消息接收者的公钥创建一个 元素,然后使用该元素生成两个 元素,一个用于签名,一个用于加密:
// create UsernameToken
set userToken=##class(%SOAP.Security.UsernameToken).Create("_SYSTEM","SYS")
//get credentials of message recipient
set x509alias = "servernopassword"
set cred = ##class(%SYS.X509Credentials).GetByAlias(x509alias)
//get EncryptedKey element
set enc=##class(%XML.Security.EncryptedKey).CreateX509(cred,$$$SOAPWSEncryptNone)
do client.SecurityOut.第三十五章 结合加密和签名
可以在同一条消息中加密和签名。在大多数情况下,只需组合前面主题中给出的方法即可。本主题讨论了多种场景。
使用非对称密钥签名并加密
要签名然后加密(使用非对称密钥时),请执行以下操作:
- 按照添加数字签名中的步骤进行操作。
- 按照加密安全标头元素中的步骤进行操作。
或者按照加密 SOAP 主体中的步骤进行操作。
使用非对称密钥加密并签名
要仅加密 SOAP 主体,然后添加数字签名(使用非对称密钥时),请执行以下操作:
- 按照加密 SOAP 主体中的步骤进行操作。
- 按照添加数字签名中的步骤进行操作。
要加密任何安全标头元素,然后添加数字签名(使用非对称密钥时),必须使用顶级 元素(在文档的其他地方不需要)。在这种情况下,请执行以下操作:
- 按照加密安全标头元素中的步骤
1 — 4进行操作。 - 对于要加密的每个安全标头元素,根据该元素创建一个
元素。为此,请调用%XML.Security.EncryptedData的Create()类方法。在此过程中,指定所有三个参数:
a. 在前面的步骤中创建的加密密钥实例。
b. 要加密的安全标头元素。
c. $$$SOAPWSReferenceEncryptedKey,指定 如何使用加密密钥实例。
欢迎来到我的 CI/CD 系列的下一个章节,我们将探讨使用 InterSystems 技术和 GitLab 进行软件开发可以采用的几种方式。
今天,我们来谈谈互操作性。
问题
当您有一个有效的互操作性生产时,您有两个独立的流程:一个是处理消息的可以正常运行的生产流程,另一个是更新代码、生产配置和系统默认设置的 CI/CD 流程。
显然,CI/CD 流程会影响互操作性。 但问题是:
- 更新期间究竟发生了什么?
- 我们需要做些什么以在更新期间尽可能缩短或消除生产停机时间?
经过将近四年的停顿,我的 CI/CD 系列又回来了! 这些年来,我与多个 InterSystems 客户合作,为不同的用例开发 CI/CD 管道。 希望本文中提供的信息对您有所帮助。
此系列文章探讨了使用 InterSystems 技术和 GitLab 进行软件开发可以采用的几种方式。
我们有一系列激动人心的话题要讨论:但今天,我们来谈谈代码之外的事情 – 配置和数据。
问题
之前我们探讨过代码提升,这在某种程度上是无状态的 – 我们总是从一个(大概)空实例到完整的代码库。 但有时,我们需要提供数据或状态。 不同的数据类型包括:
- 配置:用户、Web 应用、LUT、自定义架构、任务、业务伙伴等
- 设置:环境特定的键值对
- 数据:为了让应用正常工作,通常必须提供引用表等
我们来探讨所有这些数据类型,以及如何先将它们提交到源代码控制工具中,然后进行部署。
配置
系统配置分布在许多不同的类中,但 InterSystems IRIS 可以将大多数类导出为 XML。 首先是一个安全软件包,其中包含以下信息:
- Web 应用程序
- DocDB
- 域
- 审核事件
- KMIP 服务器
- LDAP 配置
- 资源
- 角色
- SQL 特权
- SSL 配置
- 服务
- 用户
所有这些类都提供 Exists、Export 和 Import 方法,允许您在不同的环境之间移动它们。
一些注意事项:
- 用户和 SSL 配置可能包含敏感信息,例如密码。
在这一系列文章中,我想向大家介绍并探讨使用 InterSystems 技术和 GitLab 进行软件开发可以采用的几种方式。 我将介绍以下主题:
- Git 101
- Git 流程(开发流程)
- GitLab 安装
- GitLab 工作流
- 持续交付
- GitLab 安装和配置
- GitLab CI/CD
- 为何使用容器?
- 容器基础架构
- 使用容器的 CD
- 使用 ICM 的 CD
- 容器架构
在本文中,我们将讨论如何构建并部署您自己的容器。
在这一系列文章中,我想向大家介绍并探讨使用 InterSystems 技术和 GitLab 进行软件开发可以采用的几种方式。 我将介绍以下主题:
- Git 101
- Git 流程(开发流程)
- GitLab 安装
- GitLab 工作流
- 持续交付
- GitLab 安装和配置
- GitLab CI/CD
- 为何使用容器?
- 容器基础架构
- 使用容器的 CD
- 使用 ICM 的 CD
在本文中,我们将使用 InterSystems Cloud Manager 构建持续交付。 ICM 是一个面向基于 InterSystems IRIS 的应用程序的云配置和部署解决方案。 它允许您定义所需部署配置,ICM 会自动提供这些配置。 有关详情,请参阅 ICM 概述。
在这一系列文章中,我想向大家介绍并探讨使用 InterSystems 技术和 GitLab 进行软件开发可以采用的几种方式。 我将介绍以下主题:
- Git 101
- Git 流程(开发流程)
- GitLab 安装
- GitLab 工作流
- 持续交付
- GitLab 安装和配置
- GitLab CI/CD
- 为何使用容器
- 容器基础架构
- 使用容器的 CD
在第一篇文章中,我们介绍了 Git 基础知识、深度理解 Git 概念对现代软件开发至关重要的原因,以及如何使用 Git 开发软件。
在第二篇文章中,我们介绍了 GitLab 工作流 – 一个完整的软件生命周期流程,并介绍了持续交付。
在第三篇文章中,我们介绍了 GitLab 安装和配置以及将环境连接到 GitLab
在第四篇文章中,我们编写了 CD 配置。
在第五篇文章中,我们讨论了容器以及使用容器的方式(和原因)。
在第六篇文章中,我们将探讨运行包含容器的持续交付管道所需的主要组件以及这些组件如何协同运行。
在这篇文章中,我们将构建上一篇文章中探讨的持续交付配置。
在这一系列文章中,我想向大家介绍并探讨使用 InterSystems 技术和 GitLab 进行软件开发可以采用的几种方式。 我将介绍以下主题:
- Git 101
- 流程(开发流程)
- GitLab 安装
- GitLab 工作流
- 持续交付
- GitLab 安装和配置
- GitLab CI/CD
- 为何使用容器?
- 容器基础架构
- 使用容器的 GitLab CI/CD
在第一篇文章中,我们介绍了 Git 基础知识,以及为什么对 Git 概念的高层次理解对于现代软件开发如此重要,以及如何使用 Git 开发软件。
在第二篇文章中,我们介绍了 GitLab 工作流 – 一个完整的软件生命周期流程和持续交付。
在第三篇文章中,我们介绍了 GitLab 的安装和配置以及如何将环境连接到 GitLab。
在第四篇文章中,我们编写了 CD 配置。
在 第五篇文章中,我们讨论了容器与如何(以及为什么)使用它们。
在本文中,我们将探讨运行使用容器的持续交付管道所需的主要组件,以及它们如何协同工作。
在这一系列文章中,我想向大家介绍并探讨使用 InterSystems 技术和 GitLab 进行软件开发可以采用的几种方式。 我将介绍以下主题:
- Git 101
- Git 流程(开发流程)
- GitLab 安装
- GitLab 工作流
- 持续交付
- GitLab 安装和配置
- GitLab CI/CD
- 为何使用容器
- 使用容器的 GitLab CI/CD
在第一篇文章中,我们介绍了 Git 基础知识、深度理解 Git 概念对现代软件开发至关重要的原因,以及如何使用 Git 开发软件。
在第二篇文章中,我们介绍了 GitLab 工作流 – 一个完整的软件生命周期流程,并介绍了持续交付。
在第三篇文章中,我们介绍了 GitLab 安装和配置以及将环境连接到 GitLab
在第四篇文章中,我们编写了 CD 配置。
在这篇文章中,我们将介绍容器以及使用容器的方法(和原因)。
在这一系列文章中,我想向大家介绍并探讨使用 InterSystems 技术和 GitLab 进行软件开发可以采用的几种方式。 我将介绍以下主题:
- Git 101
- Git 流程(开发流程)
- GitLab 安装
- GitLab 工作流
- 持续交付
- GitLab 安装和配置
- GitLab CI/CD
在第一篇文章中,我们介绍了 Git 基础知识、深度理解 Git 概念对现代软件开发至关重要的原因,以及如何使用 Git 开发软件。
在第二篇文章中,我们介绍了 GitLab 工作流 – 一个完整的软件生命周期流程,并介绍了持续交付。
在第三篇文章中,我们介绍了 GitLab 安装和配置以及将环境连接到 GitLab
在这篇文章中,我们将介绍编写 CD 配置。
计划
环境
首先,我们需要多个环境以及与之对应的分支:
| 环境 | 分支 | 交付 | 有权提交的角色 | 有权合并的角色 |
|---|---|---|---|---|
| 测试 | master | 自动 | 开发者、所有者 | 开发者、所有者 |
| 预生产 | preprod | 自动 | 无 | 所有者 |
| 生产 | prod | 半自动(按下按钮进行交付) | 无 |
所有者 |
开发周期
作为示例,我们将使用 GitLab 流程开发一个新功能,并使用 GitLab CD 进行交付。
- 在功能分支中开发功能。
- 对功能分支进行审查并将其合并到 master 分支中。
在这一系列文章中,我想向大家介绍并探讨使用 InterSystems 技术和 GitLab 进行软件开发可以采用的几种方式。 我将介绍以下主题:
- Git 101
- Git 流程(开发流程)
- GitLab 安装
- GitLab 工作流
- 持续交付
- GitLab 安装和配置
- GitLab CI/CD
在上一篇文章中,我们介绍了 Git 基础知识、深度理解 Git 概念对现代软件开发至关重要的原因,以及如何使用 Git 开发软件。 我们的侧重点仍是软件开发的实现部分,但本部分会介绍:
- GitLab 工作流 - 从想法到用户反馈的完整软件生命周期流程
- 持续交付 – 软件工程方式,团队通过这种方式在短周期内制作软件,从而确保软件可以随时实现可靠发布。 它的目的是更快速、更频繁地构建、测试和发布软件。
大家都搭建了测试环境。
有些人很幸运,可以在完全独立的环境中运行生产。
-- 佚名
.
在这一系列文章中,我想向大家介绍并探讨使用 InterSystems 技术和 GitLab 进行软件开发可以采用的几种方式。 我将介绍以下主题:
- Git 101
- Git 流程(开发流程)
- GitLab 安装
- GitLab 工作流
- GitLab CI/CD
- 包含容器的 CI/CD
第一部分将介绍现代软件开发的基础 – Git 版本控制系统和各种 Git 流程。
第三十四章 使用派生密钥令牌进行加密和签名 - 使用 进行签名
要使用 进行签名,请使用以下步骤:
- 如果想要签署任何安全标头元素,请创建这些安全标头元素。
- 创建
并将其添加到WS-Security标头,如创建和添加中所述。
请注意,此步骤还会创建并添加 所基于的 元素。
- 根据派生的密钥令牌创建
元素。为此,请调用%XML.Security.Signature的Create()类方法。例如:
set dsig=##class(%XML.Security.Signature).Create(dkt)
此方法返回 %XML.Security.Signature 的实例,该实例表示 标头元素。签名值通过 HMAC-SHA1 摘要算法计算,使用 隐含的对称密钥。
元素适用于消息的一组默认部分;可以指定一组不同的部分。
- 将数字签名添加到
WS-Security标头元素。为此,请调用Web客户端或Web服务的SecurityOut属性的AddSecurityElement()方法。对于参数,请指定上一步中创建的签名对象。例如:
do .
