第十八章 添加时间戳和用户名令牌

文章目录

第十八章 添加时间戳和用户名令牌

本主题讨论时间戳和用户令牌。

概述

时间戳是 WS-Security 标头中的 <Timestamp> 安全元素。严格来说,时间戳不是安全元素。但是,可以使用它来避免重放攻击。时间戳对于自定义日志记录也很有用。

用户名令牌是 WS-Security 标头中的 <UsernameToken> 安全元素;它带有用户名。它还可以带有相应的密码(可选为摘要形式)。通常使用它进行身份验证,即允许 IRIS Web 客户端使用需要密码的 Web 服务。

注意:默认情况下,WS-Security 标头元素以明文形式发送。要保护 <UsernameToken> 中的密码,应该使用 SSL/TLS、加密 <UsernameToken>(如其他地方所述),或者使用这些技术的某种组合。

添加时间戳

要将时间戳添加到 WS-Security 标头元素,请在 Web 客户端或 Web 服务中执行以下操作:

  1. 调用 %SOAP.Security.Timestamp的 Create() 类方法。此方法需要一个可选参数(以秒为单位的过期间隔)。默认过期间隔为 300 秒。例如:
java 复制代码
 set ts=##class(%SOAP.Security.Timestamp).Create()

此方法创建 %SOAP.Security.Timestamp 的实例,设置其 CreatedExpiresTimestampAtEnd 属性的值,并返回该实例。此实例表示 <Timestamp> 标头元素。

  1. 调用 Web 客户端或 Web 服务的 SecurityOut 属性的 AddSecurityElement() 方法。对于方法参数,请在创建的实例中使用 %SOAP.Security.Timestamp例如:
java 复制代码
 do client.SecurityOut.AddSecurityElement(ts)
  1. 发送 SOAP 消息。请参阅添加安全标头元素中的一般注释。

如果包含 <Timestamp> 元素,IRIS 会强制它位于 <Security> 中的第一个。

添加用户名令牌

要添加用户名令牌,请在 Web 客户端中执行以下操作:

  1. 可选择包含 %soap.inc 包含文件,它定义了可能需要使用的宏。
  2. 调用 %SOAP.Security.UsernameToken的 Create() 类方法。例如:
java 复制代码
 set user="SYSTEM"
 set pwd="_SYS" 
 set utoken=##class(%SOAP.Security.UsernameToken).Create(user,pwd)

该方法具有可选的第三个参数(类型),用于指定如何将密码包含在用户名令牌中。该参数必须是以下之一:

  • $$$SOAPWSPasswordText --- 以纯文本形式包含密码。这是默认设置。
  • $$$SOAPWSPasswordDigest --- 不包括密码,而是包括其摘要。摘要、Nonce 和创建时间戳均按照 WS-Security 1.1 的规定派生。

重要提示:此选项仅适用于与支持该选项的第三方服务器交互的 SOAP 客户端。PasswordDigest 身份验证要求服务器存储纯文本密码,这在现代安全环境中是不可接受的。PasswordDigest 算法应被视为一项旧功能。要保护 <UsernameToken> 中的密码,应该使用 SSL/TLS、加密 <UsernameToken> 或使用这些技术的某种组合。

  • $$$SOAPWSPasswordNone --- 不包括密码。

此方法创建 %SOAP.Security.UsernameToken 的实例,设置其用户名和密码属性,并返回该实例。此对象表示 <UsernameToken> 标头元素。

  1. 调用 Web 客户端或 Web 服务的 SecurityOut 属性的 AddSecurityElement() 方法。对于方法参数,请在创建的实例中使用 %SOAP.Security.UsernameToken例如:
java 复制代码
 do client.SecurityOut.AddSecurityElement(utoken)
  1. 发送 SOAP 消息。请参阅添加安全标头元素中的一般注释。
相关推荐
风骏时光牛马几秒前
HTML十大经典实战代码案例合集
前端
weedsfly2 分钟前
前端必知必会:从 IIFE 到 ESM,模块化到底在解决什么?
前端·javascript
渣波6 分钟前
拒绝 SQL 焦虑!手把手带你用 NestJS + Prisma + DTO 写出“防弹”级后端代码
javascript·数据库·后端
笨鸟飞不快9 分钟前
从单个服务到集群:一次完整的性能排查复盘
java·前端
禅思院35 分钟前
Vite vs Webpack 深度对比:从启动原理到生产构建,一篇就够了
前端·架构·前端框架
IT_陈寒36 分钟前
Vue的响应式真把我坑惨了,原来问题出在这
前端·人工智能·后端
朦胧之11 小时前
AI 编程-老项目改造篇
java·前端·后端
swipe14 小时前
从 0 到 1 实现大文件上传:分片、秒传、断点续传、暂停、重试与服务端合并
前端·javascript·面试
爱勇宝14 小时前
我做了一个只用来搜歌词的小 App
android·前端·后端
甲维斯14 小时前
用AI还原《坦克大战》并3D化升级!
前端·人工智能·游戏开发