認証設定

本章では、CAP(EDM)のICE Message Router互換機能に置ける認証の設定方法について記載します。

NECモバイルバックエンド基盤の認証設定

CAP(EDM)のICE Message Router互換機能ではNECモバイルバックエンド基盤(以降、MBaaS)の認証機能を用います。MBaaSのユーザ登録や認証設定についての詳細はMBaaSのガイドをご確認ください。

1. 認証モジュールの有効化

認証機能を有効にする場合は認証の種別によらず次の設定ファイルを作成し、認証モジュールを有効化してください。

  • /opt/nec/pf/ice/msgrouter_core/conf/login.config
password {
  com.nec.connexive.ice.router.security.jaas.MessageRouterPasswordLoginModule sufficient debug=true;
};

certificate {
  com.nec.connexive.ice.router.security.jaas.MessageRouterCertificateLoginModule required debug=true;
};

次にICE Message Router互換機能のサービスファイルのExecStartに上記で作成したlogin.configを指定するシステムプロパティ java.security.auth.login.config を追加します。

  • /usr/lib/systemd/system/ice-message-router.service
(略)
ExecStart=/usr/bin/java -classpath '/opt/nec/pf/ice/msgrouter_core/lib/*' -Dlog4j.configurationFile=/opt/nec/pf/ice/msgrouter_core/conf/log4j2.xml -Djava.security.auth.login.config=/opt/nec/pf/ice/msgrouter_core/conf/login.config com.nec.connexive.ice.router.Launcher
(略)

2. 認証方式の決定

CAPのICE Message Router互換機能では認証方式としてユーザ/パスワード認証かクライアント証明書のCNによる認証を指定することが出来ます。本項ではそれぞれの方式の設定手順を示します。

ユーザ/パスワード認証

CAPのインストール時に以下の設定で認証方式を指定した場合は本作業は不要です。

  • /release/group_vars/cap_edm.yml
authentication_type: "none"
1. 認証方式の指定

ユーザ/パスワード認証を有効にする場合次の設定ファイルのauthentication.typeに”password”を指定の上、authentication.serverに認証先のMBaaSの情報を設定してください。

  • /opt/nec/pf/ice/msgrouter_core/conf/core_config.json

なお、MBaaSテナントのアプリケーションIDおよびアプリケーションキーの初期値はCAPインストール時に/opt/nec/pf/eep/application.jsonに出力されます。 また、<テナント名>にはCONNEXIVE Application Platformのテナント名を指定してください。既定では”tenant1”です。詳細はインストールガイドをご確認ください。

(設定例)

{
    "mqtt": {
        "url": "mqtt+nio://0.0.0.0:1883",
        "authentication": {
            "type": "password",
            "server": {
                "uri": "http://mbs-api-1:8060/api/1/tenant1/login",
                "tenant": "<テナント名>",
                "appId": "<MBaaSテナントのアプリケーションID>",
                "appKey": "<MBaaSテナントのアプリケーションキー>"
            }
        }
    },
    "mongodb": {
        "url": "mongodb://<ユーザ名>:<パスワード>@<MongoDBホスト名>:<ポート番号>/rawdata?authSource=admin"
    }
}

2. サービスの再起動

上記設定ファイルの変更後サービスのリロードと再起動を実施してください。

systemctl daemon-reload
systemctl restart ice-message-router

クライアント証明書認証

クライアント証明書のCNによる認証を有効にする場合は次の手順を実施してください。

1. SSL/TLS通信の設定追加

SSL/TLS通信設定を実施してください。

2. 認証方式の指定

次の設定のauthentication.typeに” certificate”を指定の上、authentication.serverに認証先のMBaaSの情報を設定してください。
なお、MQTT over WebSocketでクライアント証明書を利用する場合はmqtt.webSocketUrlのオプションとしてtransport.needClientAuth=trueを追加してください。

  • /opt/nec/pf/ice/msgrouter_core/conf/core_config.json

(設定例)

{
    "mqtt": {
        "url": "mqtt+nio+ssl://0.0.0.0:1883?transport.needClientAuth=true", 
        "authentication": {
            "type": "certificate",
            "server": {
                "uri": "http://mbs-api-1:8060/api/1/tenant1/users/current",
                "tenant": "tenant1",
                "appId": "<MBaaSテナントのアプリケーションID>",
                "appKey": "<MBaaSテナントのアプリケーションキー>",
                "validateToken": "<MBaaSのクライアント証明書設定で設定したサーバーキー>"
            }
        }
    },
    "mongodb": {
        "url": "mongodb://<ユーザ名>:<パスワード>@<MongoDBホスト名>:<ポート番号>/rawdata?authSource=admin"
    }
}

3. サービスの再起動

上記設定ファイルの変更後サービスのリロードと再起動を実施してください。

systemctl daemon-reload
systemctl restart ice-message-router