NPS 認証プロキシの概要


この記事では、共有 NPS を設定して NPS 認証プロキシを使用する方法について説明します。共有 NPS は Webex アプリに着信通知をプッシュするためにも使用できます。 NPS が他のアプリをサポートしていない場合は、Webex for BroadWorks ソリューションガイドhttps://help.webex.com/z9gt5jの簡略化された手順に従うことができます。

NPS プロキシの概要

Webex for BroadWorks との互換性のため、UCaaS の VoIP 用プッシュサーバーという NPS プロキシ機能をサポートできるよう NPS にパッチを適用する必要があります。

この機能は、Notification Push Server に新しい設計を実装して、モバイルクライアントのサービスプロバイダとプッシュ通知証明書の秘密鍵を共有するというセキュリティの脆弱性を解決します。 NPS は、プッシュ通知証明書とキーをサービスプロバイダと共有する代わりに、新しい API を使用して UCaaS バックエンドから短期間のプッシュ通知トークンを取得し、このトークンを使用して Apple APN と Google FCM サービスでの認証を行います。

新しい Google Firebase Cloud Messaging(FCM)HTTPv1 API を介して Android デバイスに通知をプッシュする Notification Push Server の機能も強化します。

この機能の BroadWorks パッチは、Xchange で入手できます。 https://xchange.broadsoft.com/node/1046235

詳細については、Xchange の「Push Server for VoIP in UCaaS Feature Description」[英語] を参照してください。 https://xchange.broadsoft.com/node/1045458

NPS をホストする XSP(または Application Delivery Platform ADP)は、次の要件を満たす必要があります。

最小バージョンと共存制限

  • NPS は専用の XSP/ADP で有効化する必要があり、サーバー上で唯一ホストされているアプリケーションである必要があります。 これは、プッシュ通知の配信への干渉を排除するためです。

  • デプロイメントに存在する NPS アプリは 1 つのみとする必要があります。 モバイル 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 プロキシを設定する前に、FCM レガシー API の使用から FCM HTTP v1 API の使用に NPS を変更しないでください。

    NPS を設定するときに、NPS プロキシを使用するよう切り替えることができます。

  • NPS プロキシを使用する古いアプリで通知が正しく機能していることを確認したら、Android アプリの FCM API キーと、iOS アプリの APN 認証キーを削除できます。

APNs HTTP/2

  • Cisco/BroadSoft 以外の iOS アプリをデプロイした場合は、NPS プロキシを使用するよう NPS を設定する前に、それらのアプリが HTTP/2 APNS プロトコルを使用するよう設定してください。

  • Collaborate または SaaS BroadWorks アプリをすでにサポートしている XSP/ADP は、HTTP/2 に移行する必要があります。 HTTP/2 の設定の詳細については、「APNS の通知プッシュサーバーへのHTTP/2 サポート」[英語] を参照してください(この記事では、これらの iOS アプリをサポートするための NPS の移行についてまとめられています)。

Android FCMv1

  • シスコ/BroadSoft 以外の Android アプリをデプロイした場合は、NPS プロキシを使用するよう NPS を設定する前に、FCMv1 キーを使用するようそれらのアプリを設定してください。

  • 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 やその他の(シスコ以外の)Android アプリをサポートしている場合。

4

FCM レガシーモードを再度有効にします。

NPS が UC-One SaaS をサポートしている場合。 NPS プロキシを設定する前に FCMv1 が有効になっていると、UC-OneSaaS へのプッシュ通知が届かなくなります。

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 を実行している場合は、APNS に対して HTTP/2 を使用するように NPS アプリケーションを設定する前に、ap354313 を適用する必要があります。

1

本稼働 URL と接続パラメーターを以下で設定します XSP_CLI/Applications/NotificationPushServer/APNS/Production>

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 認証プロキシの設定の一部として有効にできるようにします。 NPS 認証プロキシの設定準備が整うまで、FCMv1 は有効にしないでください。有効にすると、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 の設定を確認します。 必要に応じて、コマンドのセットバージョンを使用します。

以下を実行します 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 認証プロキシの設定の一部として有効にできるようにします。 NPS 認証プロキシの設定準備が整うまで、FCMv1 は有効にしないでください。有効にすると、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 キーは、NPS 認証プロキシの設定プロセス中のみ有効化する必要があるため、FCMv1 を一時的に無効化しています。

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 設定というタイトルをつけます。

シスコから 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

Webex アプリを許可リストに追加しなければならない場合があるため、アプリケーションサーバーがアプリケーション ID をスクリーニングしているかどうかを確認します。

  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 アプリケーションのプッシュ通知が失敗するようになった場合は、設定が間違っている可能性があります。 その場合は、HTTP2Enabled を false に設定することでレガシーバイナリインターフェイスに戻すことができます。