【问题标题】:How do I use password reset REST APIs on service now?如何在 servicenow 中使用密码重置 REST API?
【发布时间】:2018-06-13 09:38:33
【问题描述】:

我想从外部应用程序为 service now 用户模拟密码重置服务,并且我已经在我的 servicenow 开发人员实例上安装了 Password Reset - Orchestration Add-on 插件。除此之外,我可以在我的 REST 资源管理器中看到 Pwd Reset API 列表(例如 pwd_init、pwd_verify 等)。我浏览了documentation page 上提供的文档,但如果我试图从 Postman 等外部服务调用这些 API,我不知道请求有效负载会是什么样子。我想要类似的东西this api documentation

谁能帮我解决这个问题?

【问题讨论】:

    标签: servicenow servicenow-rest-api


    【解决方案1】:

    使用 Table API 来执行此操作。 为了重置用户的密码,您基本上想从 sys_user 表中更新用户记录的 user_password 字段。

    Method: PUT/PATCH
    http://<instance>/api/now/table/{tableName}/{sys_id}
    

    这里tableName是sys_user,sys_id是sys_user表中用户记录的sys_id。

    API 请求的主体应该是这样的:

    {
      "user_password": "resetpasswordtext"
    }
    

    请记住,这将重置用户的密码,但新密码不会是“resetpasswordtext”。所以用户将无法使用“resetpasswordtext”登录。

    要通过 API 为用户实际设置密码,可以使用与上面相同的表 API。但为了将密码正确加密存储在数据库中,需要在请求 URL 中添加以下查询参数来设置密码。

    sysparm_input_display_value=true
    

    所以API调用将是

    Method: PUT/PATCH
    http://<instance>/api/now/table/{tableName}/{sys_id}?sysparm_input_display_value=true
    BODY: {
      "user_password": "newpassword"
    }
    

    现在用户可以使用文本“newpassword”来登录实例。 希望它对您的用例有所帮助。

    【讨论】:

    • 感谢您的回答。但我想使用密码重置 REST API,因为我需要一个系统生成的密码,即由 service now 生成,在 Service Now 服务台密码重置应用程序的类似行上。有 UI 页面,但我想使用后端的这些 api 调用来实现相同的目标。
    【解决方案2】:

    所以,我的用例不涉及使用密码重置 API,但对于那些有兴趣在外部生成新密码,然后进行 api 调用以将其设置为该用户的新密码的人,这里是代码基于 Milind 上述回答的示例:

    Python3

    def change_password_snow(user, pwd, new_pwd, snow_url, sys_id):
    # Set the request parameters
    url = snow_url + sys_id    
    
    # Set proper headers
    headers = {"Content-Type":"application/xml","Accept":"application/json"}
    
    # Set query params
    params = {"sysparm_input_display_value": "true", "sysparm_fields": "user_password"}
    
    # Do the HTTP request
    response = requests.patch(url, auth=(user, pwd), headers=headers, params=params, data=f"<request><entry><user_password>{new_pwd}</user_password></entry></request>")
    
    return response
    

    ServiceNow 上的设置

    为此,您在 ServiceNow 中进行身份验证的用户需要具有管理员权限。

    或者修改 sys_user.user_password ACL 以允许非管理员用户读取和写入该字段(如果他们具有您选择的角色)。对于我的用例,我创建了一个自定义角色并将其附加到该用户。

    【讨论】:

      猜你喜欢
      • 2020-09-27
      • 2018-01-01
      • 1970-01-01
      • 2021-07-15
      • 2019-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-08
      相关资源
      最近更新 更多