可使用 Workspace ONE Intelligence 和您的 ServiceNow 服务来请求和批准应用程序安装。首先在 ServiceNow 中进行配置,然后在 Workspace ONE Intelligence 中将信息添加到您的 ServiceNow 连接,最后在 Workspace ONE UEM 中编辑应用分配。

前提条件

在使用应用批准之前,请先配置列出的集成、系统和设置。

过程

  1. 设置 ServiceNow 以处理入站、应用请求,以便您可以自定义实例和批准策略。此过程使用 ServiceNow 的脚本化 REST API 功能。
    要开始请求过程, Workspace ONE Intelligence 会将一个请求(如示例代码)发送到 ServiceNow。请求包括有关请求安装的用户、设备和应用程序的详细信息。
    {
      "RequestId": "bffb4469-56fb-4141-9ab0-0897f65143ba",
      "RequestFor": {
        "UserId": "15",
        "UserAttributes": {
          "user_name": "username",
          "last_name": "user",
          "first_name": "name",
          "email": "username@example.com"
        }
      },
      "Domain": "${domain}",
      "DeviceId": 123,
      "DeviceProperties": {
        "name": "Device Name",
        "device_udid": "F11C43E8307092418D7D5B0D9B48F235",
        "platform": "Windows 10"
      },
      "Notes": "Notes",
      "CatalogItem": {
        "Id": "267",
        "Name": "App Name",
        "Categories": null,
        "Properties": {
          "package_id": "{12345A78-40C1-2702-0000-000004000000}",
          "version": "9.20.0",
          "platform": "WinRT"
        }
      },
      "DueDate": 1568989813956,
      "Links": {
        "ApprovalNotify": {
          "Url": "<CallbackURL>"
        }
      }
    }
    1. 登录到 ServiceNow,然后搜索脚本化 REST API
    2. 添加脚本化 REST API
    3. 名称文本框中输入描述性名称,如 Workspace ONE 应用批准
    4. 对于 API ID,请输入 appapproval,并记录您的 API 命名空间,因为在此过程的稍后,您需要在 Workspace ONE Intelligence 中输入该信息。

    5. 转到资源部分,添加一个资源
    6. 对于资源名称,请输入 Request
    7. 对于 HTTP 方法,请使用 POST
    8. 检查相对路径是否为 /request
      资源路径显示为 /api/<namespace>/appapproval/request
      重要事项: 如果路径未采用此格式,则请求将失败。要修复此问题,请检查脚本化 REST API 和资源的名称是否正确。
    9. 配置脚本以匹配您的环境。

      将值存储为 ServiceNow 请求的一部分。如果存储值,则会在批准或拒绝请求票证后编译出站 API 请求。

      您可以自定义部署的示例代码。您可以在请求中创建一个 cart 项目,或者将用户名与您系统的 SYSID 相关联。

      (function process(/*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {
          var RequestID = request.body.data.RequestId;
          var CallbackURL = request.body.data.Links.ApprovalNotify.Url;
          var DeviceID = request.body.data.DeviceId;
          var Notes = request.body.data.Notes;
          var AppName = request.body.data.CatalogItem.Name;
          var UserID = request.body.data.RequestFor.UserId;
          var UserName = request.body.data.RequestFor.UserAttributes.user_name;
          var FirstName = request.body.data.RequestFor.UserAttributes.first_name;
          var LastName = request.body.data.RequestFor.UserAttributes.last_name;
          gs.info("Request Recieved");
          var create = new GlideRecord('sc_request');
          create.initialize();
          create.setValue('short_description',"Request for Installation of " + AppName);
          create.setValue('description',FirstName + " " + LastName + " Requests Installation of " + AppName);
          create.setValue('u_uem_callback_url',CallbackURL);
          create.setValue('u_uem_notes',Notes);
          create.setValue('u_uem_device_id',DeviceID);
          create.setValue('u_uem_request_id',RequestID);
          create.setValue('u_uem_user_id',UserID);
          create.setValue('u_requesting_user',UserName);
           
          create.insert();
           
          response.setStatus(200);
      })(request, response);
  2. 使用 ServiceNow 中的表格将自定义字段添加到请求票证。自定义字段有助于将出站批准和拒绝 API 请求编译到 Workspace ONE Intelligence
    1. 在 ServiceNow 导航栏中搜索表格,然后选择系统定义 > 表格
    2. 搜索表格名称 sc_request,然后打开以查看列详细信息。
      如果要按表格标签进行搜索,则表格的标签为 请求
    3. 添加列。
      • 添加系统返回到 Workspace ONE Intelligence 的所需值,并在 API 请求中添加相应的值。
        • ApprovalNotify.URL = UEM 回调 URL
        • DeviceId = UEM 设备 ID
        • RequestId = UEM 请求 ID
      • 添加可选值。
        • UserId = UEM 用户 ID
        • user_name = 请求用户
        • Notes = UEM 说明
      类型 列标签 列名称 最大长度
      字符串 UEM 回调 URL u_uem_callback_url 2048
      整数 UEM 设备 ID u_uem_device_id 不适用
      字符串 UEM 请求 ID u_uem_request_id 40
      整数 UEM 用户 ID u_uem_user_id 不适用
      字符串 请求用户 u_requesting_user 40
      字符串 UEM 说明 u_uem_notes 4000
      注: 如果更改默认 列名称,请更新脚本以使用更新的列名称。
    4. 选择更新并保存表格。
    5. 或者,您可以使用系统 UI表单区域来隐藏 UI 中的列和值。隐藏列和值会将其设置为仅在 API 请求中使用。
  3. 在 ServiceNow 中,转到流设计器 > 新建 > 操作以为工作流配置一个操作。
    ServiceNow 工作流会向 Workspace ONE Intelligence 发送批准或拒绝响应。
    1. 操作属性中输入名称和元数据。

    2. 定义操作的输入
      • Request ID
      • Device ID
      • Updated By
      • Notes
      • Updated At
      • Callback URL
      • Approval

    3. 通过在操作大纲部分中选择加号 (+) 来添加脚本步骤。然后,转到实用程序 > 脚本步骤。脚本步骤会将批准状态字符串转换为大写,以便为 API 调用做准备。
      1. 将输入变量定义为 approval_status,然后将其拖动到批准值中。
      2. 添加此示例代码,以将批准状态转换为大写。
        (function execute(inputs, outputs) {
        var  approval_lc = inputs.approval_status;
         
        outputs.ApprovalStatus = approval_lc.toUpperCase();
        })(inputs, outputs);
      3. 将输出变量定义为 ApprovalStatus

    4. 向操作添加 REST 步骤
      1. 使用 Callback URL 变量作为 Base URL 值。
      2. 使用 POST 作为 HTTP 方法
      3. 添加标头 Content-Type =application/json
      4. Request Type 定义为文本
      5. 输入请求正文负载,如示例代码。将示例代码中的值替换为数据变量。
        {
        "data":{
            "request_id": "action-Request ID", 
            "device_id": "action-Device ID", 
            "approval_status": "step-Script step-ApprovalStatus", 
            "updated_by": "action-Updated By", 
            "notes" : "action-Notes", 
            "updated_at" : "action-Updated At"
            }
        }

    5. 保存操作。
  4. 在 ServiceNow 中,根据您组织的批准策略,创建具有批准操作的工作流。
    1. 流设计器中,选择新建
    2. 应用程序运行方式中填充元数据,包括属性。

    3. 要创建触发器,请使用已更新来查找票证状态中的更改。

    4. 对于表格,请选择请求[sc_request]
    5. 条件定义为[审批 - 其中之一 - 已审批、已拒绝] 和 [UEM 回调 URL - 非空]
    6. 对于运行触发器,选择一次

    7. 添加 AppApproval 操作。

    8. 从请求表中添加与所需操作输入匹配的相应值。

    9. 保存并激活工作流。
  5. Workspace ONE Intelligence 中,添加脚本化 REST API 命名空间。
    1. Workspace ONE Intelligence 中,转到设置 > 集成 > ServiceNow
    2. 编辑连接以包含 API 命名空间
      您在将脚本化 REST API 添加到 ServiceNow 时已记录了此值。

  6. 若需批准,请在 Workspace ONE UEM 中编辑应用分配。
    编辑应用分配以要求批准后,用户便可以请求使用 Workspace ONE Intelligent Hub 在 Windows 10 设备上安装应用。
    1. Workspace ONE UEM console 中,导航到相应的应用并编辑分配。
    2. 启用需要批准安装