ServiceNow:通过REST API设置加密字段

时间:2018-01-12 19:30:29

标签: servicenow

我尝试按照以下所述对表休息端点进行PUT:

https://developer.servicenow.com/app.do#!/rest_api_doc?v=jakarta&id=r_TableAPI-PUT

这样我就可以设置加密字段的值。我正在设置参数" sysparm_input_display_value"如文档中所描述的那样真实,但它没有将价值持久化到该领域。我的API用户确实有一个具有加密上下文的角色。但是,在提交请求时,您如何选择用于API用户的加密上下文?如果您的用户有多个加密上下文角色,API将如何确定使用哪个加密字段值?

文档说明:

"要设置加密字段的值,必须将此参数(sysparm_input_display_value)设置为true。如果此参数未设置为true,则不会保存提交到加密字段的值。 此外,请求用户必须在提交请求之前拥有相应的加密上下文。"

您的用户(您用于向API提交请求)如何获得"适当的加密上下文"?在UI中,您可以选择加密上下文下拉菜单,但是如何为API提交做到这一点?

我看过一些帖子指向GlideRecord / GlideEncryptor脚本,你可以在那个scritpting世界中获取并设置contextID,但是这些脚本方法对我没有帮助,因为我从.NET提交API请求控制台应用程序。

我错过了什么?谢谢!

1 个答案:

答案 0 :(得分:0)

我在Servicenow中设置加密时遇到了一些问题。从我的头脑中,我可以尝试一些建议:

  1. 尝试使用脚本化REST API并使用"GlideSession.get().getEncryptionContext().setCurrent(encryptionID);"
  2. 设置加密上下文,而不是使用TABLE API
  3. 如果脚本化REST API不是一个选项,您可以在onInsert业务规则中设置加密上下文,在业务规则条件中,您可以设置条件,如gs.getUserID()==="<SYS_ID OF YOUR REST USER>",然后在业务规则脚本中可以设置加密上下文。
  4. enter image description here

    P.S。我没有测试过代码,请自行验证:)