NPS 验证代理概述


本文介绍如何将共享的 NPS 配置为使用 NPS 验证代理,以便其还可用于将 呼叫通知推送到 Webex 应用程序。如果您的 NPS 不支持其他应用程序,可以按照 《Webex For BroadWorks 解决方案指南》(https://help.webex.com/z9gt5j) 中的简化程序操作。

NPS 代理概述

要与 Webex for BroadWorks 兼容,必须对 NPS 安装修补程序,使其支持 NPS 代理功能 UCaaS 中的 VoIP 推送服务器

此功能在通知推送服务器中实施新的设计,以解决 与移动客户端服务商共享推送通知证书私人密钥的安全漏洞。 NPS 使用新 API 从 UCaaS 后端获取短时有效的推送通知令牌, 并使用此令牌通过 Apple APNs 和 Google FCM 服务进行验证,而不是与服务商共享推送通知证书和密钥。

此功能还增强了通知推送服务器通过 新的 Google Firebase Cloud Messaging (FCM) HTTPv1 API 将通知推送到 Android 设备的能力。

Xchange 上提供了针对此功能的 BroadWorks 修补程序:https://xchange.broadsoft.com/node/1046235

有关详细信息,请参阅 Xchange 上 UCaaS 中的 VoIP 推送服务器功能说明https://xchange.broadsoft.com/node/1045458

托管 NPS 的 XSP(或应用交付平台 ADP)必须满足以下要求:

最低版本和共存限制

  • 必须在专用 XSP/ADP 上激活 NPS,并且 NPS 必须是服务器上唯一托管的应用程序。这是为了消除 对推送通知的干扰。

  • 部署中只能有一个 NPS 应用程序。如果您使用的是移动版 UC-One Collaborate/Connect 和/或 UC-One SaaS,并且 正在实施 Webex for BroadWorks,则必须为所有应用程序共享这个 NPS。

  • NPS 必须位于 R22 或更高版本的 XSP 或 ADP 上。

    如果 XSP 运行 NPS 且 AS 为 R21.SP1,则 R22/R23 XSP 与 R21 堆栈兼容。有关详细信息,请参阅 BroadWorks 兼容性值表

  • 有关 ADP 服务器的详细信息,请访问 https://xchange.broadsoft.com/node/1051580

共享 NPS

请先阅读以下说明,然后将您的共享 NPS 配置为使用 NPS 代理:

  • 如果您的 NPS 与其他应用程序(而不仅仅是 Webex 应用程序)一起使用:在配置 NPS 代理之前,不要将 NPS 从使用 FCM 传统 API 更改为使用 FCM HTTP v1 API。

    您可以在将 NPS 配置为使用 NPS 代理时进行更改。

  • 当您通过 NPS 代理验证了通知在较旧应用程序中正常工作时,可以删除 Android 应用程序的 FCM API 密钥,以及 iOS 应用程序的 APNs 验证密钥。

APNs HTTP/2

  • 如果您部署了并非来自 Cisco/BroadSoft 的任何 iOS 应用程序,请将这些应用程序配置为使用 HTTP/2 APNS 协议, 然后再将 NPS 配置为使用 NPS 代理。

  • 已支持 Collaborate 或 SaaS BroadWorks 应用程序的 XSP/ADP 需迁移到 HTTP/2。有关配置 HTTP/2 的详细信息 ,请参阅对 APNS 通知推送服务器的 HTTP/2 支持)(本文中总结了迁移 NPS 以支持这些 iOS 应用程序的内容)。

Android FCMv1

  • 如果您部署了任何不属于 Cisco/BroadSoft 的 Android 应用程序,请先将这些应用程序配置为使用 FCMv1 密钥,然后再将 NPS 配置为使用 NPS 代理。

  • 如果 XSP/ADP 当前支持 Connect 或 UC-One SaaS 应用程序,则在配置 NPS 代理之前无法启用 FCMv1 密钥 。我们建议您将所有其他应用程序迁移到 FCMv1 密钥,启用、测试然后禁用,直至准备好 完成设置说明(本文介绍了迁移流程)。

图 1.迁移到 NPS 验证代理的可视概要
表 1.迁移到 NPS 代理的任务概要

顺序

任务标题

何时/为什么需要完成任务?

1

为 UC-One SaaS(或 Connect)iOS 应用程序将 NPS 迁移到 HTTP/2。

如果 NPS 支持这些应用程序,但尚未针对 HTTP/2 对其进行配置。

2

为 UC-One SaaS(或 Connect)Android 应用程序将 NPS 迁移到 FCMv1。

如果 NPS 支持这些应用程序,但尚未针对 FCMv1 对其进行配置。

3

启用 FCMv1 模式并测试推送通知。

如果 NPS 支持 UC-One Connect 和/或其他(非 Cisco)Android 应用程序。

4

重新启用 FCM 传统模式。

如果 NPS 支持 UC-One SaaS。如果在配置 NPS 代理之前将 FCMv1 保留为启用状态,则将通知推送 到 UC-One SaaS 启动失败。

5

安装 NPS 验证代理修补程序。

如果 NPS 在 XSP R22 或 XSP R23 上。

6

将 NPS 配置为使用 NPS 验证代理:

  • 从 NPS 附加技术支持

  • 请求 CI OAuth 帐户

  • 在 NPS 上创建 CI 帐户并配置刷新令牌超时

  • 添加 Android 应用程序 id

  • 添加 iOS 应用程序 id

  • 检查/设置 URL 和连接超时

  • 将应用程序添加到 AS 允许列表

  • (重新)启用 FCMv1

  • 重新启动 XSP / ADP

  • iOS 和 Android 应用程序的测试 PN

始终需要。

7

删除 FCM 传统模式密钥。

适用于 FCMv1 上的 NPS 成功支持的应用程序。

对于发送到 iOS 平台上的 UC-One SaaS 和 Webex 应用程序的推送通知而言,必须执行此任务。

准备工作

如果您的 XSP 在运行 R22,则需要应用 ap354313,然后才能将 NPS 应用程序配置为对 APNS 使用 HTTP/2。

1

XSP_CLI/Applications/NotificationPushServer/APNS/Production> 设置生产 URL 和连接参数

set url https://api.push.apple.com/3/device

set connectionPoolSize 2

set connectionTimeout 3000

set connectionIdleTimeoutInSeconds 600

注意:请勿将连接超时设置为低于 1000。

2

将应用程序 ID 添加到 APNS 应用程序上下文,确保省略验证密钥 – 将其设置为空。

对于 UC-One SaaS:XSP_CLI/Applications/NotificationPushServer/APNS/Production/Tokens> add com.broadsoft.uc-one

对于 Webex 应用程序:XSP_CLI/Applications/NotificationPushServer/APNS/Production/Tokens> add com.cisco.squared

3

使用以下命令检查验证密钥:XSP_CLI/applications/notificationpushserver/apns/production/tokens > get

4

如果 com.broadsoft.uc-one 的验证密钥不为空,可以使用以下命令将其清除:XSP_CLI/Applications/NotificationPushServer/APNS/Production/Tokens> clear the-authkey

5

启用 HTTP/2:

XSP_CLI/Applications/NotificationPushServer/APNS/GeneralSettings> set HTTP2Enabled true

6

仅对于 UC-One SaaS 应用程序:登录经销商门户,然后转至配置 > BroadWorks >

7

向下滚动到“通知推送服务器”部分,选择您的版本(例如版本 22),然后按照门户中提供的说明进行操作。

  • 此任务适用于 XSP 上的 NPS。如果您的 NPS 在 ADP 上,请忽略。

  • 您可以遵照此程序为 UC-One Connect 或 UC-One SaaS Android 应用程序迁移到 FCMv1 通知。

  • 如果要使用 NPS 代理验证到 UC-One 或 Webex Android 应用程序的推送通知,必须使用 FCMv1。

  • 此任务将为 FCMv1 准备 NPS,以便您可以将其作为 NPS 验证代理配置的一部分启用。请勿 启用 FCMv1,直到您准备好配置 NPS 验证代理时,否则到 SaaS 客户端的通知将失败。

1

从 Firebase 控制台获取项目 ID:

  1. 登录到 console.firebase.google.com。

  2. 选择 UC-One(Connect 或 SaaS)应用程序项目,打开其项目设置。

  3. 打开常规选项卡并记录项目 ID。

2

从 Firebase 获取您服务帐户的私钥:

  1. 导航到项目设置中的“服务帐户”选项卡。

  2. 可以创建新的服务帐户并获取其私钥。

  3. 也打开现有服务帐户并为其生成新的私钥。

    注意:服务帐户必须具有 firebaseadmin-sdk 权限。

  4. 将密钥下载到安全的位置。

3

将密钥复制到托管您的 NPS 的 XSP。

4

将项目 ID 和关联的私钥添加到 FCM 项目上下文:

XSP_CLI/Applications/NotificationPushServer/FCM/Projects> add project-id path/to/keyfile

5

将 UC-One(Connect 或 SaaS)应用程序和关联的项目 ID 添加到 FCM 应用程序上下文:

XSP_CLI/Applications/NotificationPushServer/FCM/Applications> add applicationId com.broadsoft.connect projectId project-id

6

根据此处显示的属性和建议值检查 FCM 的配置。如有必要,使用命令的 set 版本来更改值:

运行 XSP_CLI/Applications/NotificationPushServer/FCM> get

参数

建议值

authURL

https://www.googleapis.com/oauth2/v4/token

pushURL

https://fcm.googleapis.com/v1/projects/PROJECT-ID/messages:send

scope

https://www.googleapis.com/auth/firebase.messaging

tokenTimeToLiveInSeconds

3600

connectionPoolSize

10

connectionTimeoutInMilliseconds

3000

connectionIdleTimeoutInSeconds

600

  • 此任务适用于在 ADP 上的 NPS。如果您的 NPS 在 XSP 上,请忽略。

  • 您可以遵照此程序为 UC-One Connect 或 UC-One SaaS Android 应用程序迁移到 FCMv1 通知。

  • 如果要使用 NPS 代理验证到 UC-One 或 Webex Android 应用程序的推送通知,必须使用 FCMv1。

  • 此任务将为 FCMv1 准备 NPS,以便您可以将其作为 NPS 验证代理配置的一部分启用。请勿 启用 FCMv1,直到您准备好配置 NPS 验证代理时,否则到 SaaS 客户端的通知将失败。

1

从 Firebase 控制台获取项目 ID:

  1. 登录到 console.firebase.google.com。

  2. 选择 UC-One(Connect 或 SaaS)应用程序项目,打开其项目设置。

  3. 打开常规选项卡并记录项目 ID。

2

从 Firebase 获取您服务帐户的私钥:

  1. 导航到项目设置中的“服务帐户”选项卡。

  2. 可以创建新的服务帐户并获取其私钥。

  3. 也打开现有服务帐户并为其生成新的私钥。

    注意:服务帐户必须具有 firebaseadmin-sdk 权限。

  4. 将密钥(.json 文件)下载到安全的位置。

3

将 .json 文件导入到 ADP 服务器 /bw/install

4

登录到 ADP CLI,并将项目和 API 密钥添加到 FCM 项目上下文:

ADP_CLI/Applications/NotificationPushServer/FCM/Projects> add connect-ucaas /bw/install/filename.json

5

将应用程序和项目 ID 添加到 FCM 应用程序上下文:

ADP_CLI/Applications/NotificationPushServer/FCM/Applications> add applicationId com.broadsoft.ucaas.connect projectId project-id

6

检验配置:

ADP_CLI/Applications/NotificationPushServer/FCM/Projects> get
Project ID Accountkey
========================
connect-ucaas ********
ADP_CLI/Applications/NotificationPushServer/FCM/Applications> get
Application ID Project ID
===================================
com.broadsoft.ucaas.connect connect-ucaas

只有在以下情况下才需要执行此操作(作为迁移的一部分):

  • 您的 NPS 用于 UC-One SaaS 或 BroadWorks Connect Android 应用程序。

  • 您已经测试到其他应用程序的呼叫推送通知可与 FCMv1 API 一起工作。

您将临时禁用 FCMv1,因为这些应用程序的 FCMv1 密钥只能在 NPS 验证代理配置过程中启用。

1

登录到托管您的共享 NPS 的 XSP。

2

导航到 FCM 上下文并禁用 FCM v1:XSP_CLI/Applications/NotificationPushServer/FCM> set V1enabled false,恢复为使用 FCM 传统 API 密钥。

安装以下修补程序以支持 NPS 验证代理功能:

R22 修补程序

R23 修补程序

1

通过自行激活联系人或 TAC 创建服务请求,以预配置您的 (Webex Common Identity) OAuth 客户端 帐户。将服务请求的标题设置为用于验证代理设置的 NPS 配置

Cisco 会为您提供一个 OAuth 客户端 ID、客户端密钥以及在 60 天内有效的刷新令牌。如果令牌在 您将其与 NPS 一起使用之前过期,您可以再次提交请求。
2

在 NPS 上创建客户端帐户:

XSP_CLI/Applications/NotificationPushServer/CiscoCI/Client> set clientId client-Id-From-Step1

XSP_CLI/Applications/NotificationPushServer/CiscoCI/Client> set clientSecret
New Password: client-Secret-From-Step1
XSP_CLI/Applications/NotificationPushServer/CiscoCI/Client> set RefreshToken
New Password: Refresh-Token-From-Step1

要验证您输入的值是否与给定的值匹配,请运行 XSP_CLI/Applications/NotificationPushServer/CiscoCI/Client> get

3

输入 NPS 代理 URL,并设置令牌刷新间隔(建议 30 分钟):

XSP_CLI/Applications/NotificationPushServer/CloudNPSService> set url https://nps.uc-one.broadsoft.com/nps/

XSP_CLI/Applications/NotificationPushServer/CloudNPSService> set VOIPTokenRefreshInterval 1800

4

(适用于 Android 通知)将 Android 应用程序 ID 添加到 NPS 上的 FCM 应用程序上下文。

对于 Android 上的 Webex 应用程序:XSP_CLI/Applications/NotificationPushServer/FCM/Applications> add applicationId com.cisco.wx2.android

对于 Android 上的 UC-One 应用程序:XSP_CLI/Applications/NotificationPushServer/FCM/Applications> add applicationId com.broadsoft.connect

5

(适用于 Apple iOS 通知)将应用程序 ID 添加到 APNS 应用程序上下文,确保省略验证密钥 – 将其设置为空。

对于 iOS 上的 Webex 应用程序:XSP_CLI/Applications/NotificationPushServer/APNS/Production/Tokens> add com.cisco.squared

对于 iOS 上的 UC-One 应用程序:XSP_CLI/Applications/NotificationPushServer/APNS/Production/Tokens> add com.cisco.squared

6

配置以下 NPS URL:

表 2.

XSP CLI 上下文

参数

XSP_CLI/Applications/NotificationPushServer/FCM>

authURL

https://www.googleapis.com/oauth2/v4/token

pushURL

https://fcm.googleapis.com/v1/projects//messages:send

scope

https://www.googleapis.com/auth/firebase.messaging

XSP_CLI/Applications/NotificationPushServer/APNS/Production>

url

https://api.push.apple.com/3/device

7

将以下 NPS 连接参数配置为显示的建议值:

表 3.

XSP CLI 上下文

参数

XSP_CLI/Applications/NotificationPushServer/FCM>

tokenTimeToLiveInSeconds

3600

connectionPoolSize

10

connectionTimeoutInMilliseconds

3000

connectionIdleTimeoutInSeconds

600

XSP_CLI/Applications/NotificationPushServer/APNS/Production>

connectionTimeout

3000

connectionPoolSize

2

connectionIdleTimeoutInSeconds

600

8

检查应用程序服务器是否正在筛选应用程序 ID,因为您可能需要将 Webex 应用程序添加到允许列表:

  1. 运行 AS_CLI/System/PushNotification> get 并检查 enforceAllowedApplicationList 的值。如果是 true,您需要完成此子任务。否则,请跳过子任务的其余部分。

  2. AS_CLI/System/PushNotification/AllowedApplications> add com.cisco.wx2.android “Webex Android”

  3. AS_CLI/System/PushNotification/AllowedApplications> add com.cisco.squared “Webex iOS”

1

重新启动 XSP:

bwrestart
2

通过从 BroadWorks 订阅方向 Android 上的呼叫客户端发出呼叫,测试到 Android 的呼叫通知。确认 Android 设备上显示呼叫通知。

注意:如果 UC-One Android 应用程序的推送通知开始失败,可能是存在配置错误。 如果是这种情况,可以按如下方式恢复为传统 FCM:

  1. 禁用 FCMv1:XSP_CLI/Applications/NotificationPushServer/FCM> set V1Enabled false

  2. 重新启动 XSP:bwrestart

  3. 检查配置。

  4. 重新启用 FCMv1 并重新启动 XSP。

  5. 重复此测试。

3

通过从 BroadWorks 订阅方向 iOS 上的呼叫客户端发出呼叫,测试到 iOS 的呼叫通知。确认 iOS 设备上显示呼叫通知。

注意:如果 UC-One iOS 应用程序的推送通知开始失败,可能是存在配置错误。如果 是这种情况,可以通过以下命令恢复为传统二进制接口:set HTTP2Enabled false