モバイル・オフライン同期のセキュリティーを確保する  

IBM Mobile Foundation、IBM Cloudant、IBM Cloud Object Storage を利用して、モバイル・アプリ内のデータと画像をクラウドにセキュアに保管して同期化する

By Shikha Maheshwari, Shivakumar HR, Devipriya Selvarajan

Description

暗号化したデータを自動的に同期化する、セキュアなオフラインファーストのモバイル・アプリを開発する方法を学んでください。このコード・パターンでは、ハイブリッド・モバイル・アプリ内にセキュアなオフライン同期化を実装する方法を説明します。この実装で利用するのは、IBM Mobile Foundation の JSONStore、Ionic フレームワーク、IBM Cloudant、IBM Cloud Object Store です。このパターンに従うことで、モバイル・アプリ内でオフライン・ユーザー認証を実装する方法、データを暗号化してセキュアにモバイル・デバイス上に保管する方法、ダウンストリームとアップストリームのデータと画像を自動的に同期化する方法を学べます。

Overview

オンライン・モードとオンライン・モードの両方でエンタープライズ・モバイス・アプリをシームレスに機能させるには、デバイス上の暗号化されたストレージを使用して、データをバックエンドのデータベースと自動的に同期させる必要があります。

データの自動同期化は CouchDB データベースや Cloudant No SQL DB データベースを使用して実装できますが (これらのデータベースでは CouchDB Replication Protocol を実装しているため)、ハイブリッド・アプリと Android/iOS ネイティブ・アプリの両方でオフライン同期化を実装するとなったら、IBM Mobile Foundation に含まれる JSONStore コレクションが強力な代替手段となります。

JSONStore は、AES 256 ビット暗号方式で暗号化した JSON ドキュメントを永続的に保管し、CouchDB または Cloudant データベースと自動的にデータを同期します。さらに、JSONStore の堅牢な同期化アーキテクチャーを使用すれば、RDBMS や ERP といったバックエンドの従来型の基幹システムにまで同期化を拡張することができます。

JSONStore の同期化アーキテクチャー

このコード・パターンを完了すると、以下の方法がわかるようになります。

  • JSONStore を使用して、モバイル・アプリ内でオフライン・ユーザー認証を実装する
  • 暗号化された JSONStore を使用して、セキュリティーが確保された形でデータをデバイス上に保管する
  • JSONStore の自動同期化機能を使用して、Cloudant データベースとデバイス間のダウンストリームとアップストリームのデータ同期化を実装する
  • imgCache.js と Cordova File API を使用して、Cloud Object Storage とデバイス間のダウンストリームとアップストリームの画像同期化を実装する

Flow

  1. オンラインのシナリオ

    セキュアなオンライン同期化のアーキテクチャー図

    1. ネットワークとの接続中に、ユーザーがモバイル・アプリを起動してログインします。
    2. モバイル・アプリから Mobile Foundation サーバーに、検証対象のユーザー資格情報が送信されます。Mobile Foundation サーバーがユーザー資格情報を検証し、検証結果に応じたレスポンスをモバイル・アプリに返します。
    3. ユーザー認証が成功した場合、モバイル・アプリが現在のユーザー資格情報を使用して JSONStore コレクションを初期化します。
    4. モバイル・アプリが Mobile Foundation アダプターを使用して、Cloudant データベースとのデータ初期化を開始します。
    5. Mobile Foundation の同期化アダプターによって Cloudant データベースに対する REST 呼び出しが行われ、同期化されたデータがモバイル・アプリに返されます。Cloudant データベースからフェッチしたデータには画像の参照が含まれていて、その画像は Cloud Object Storage 上に保管されています。
    6. モバイル・アプリが Mobile Foundation アダプターを呼び出します。これによって Cloud Object Storage が呼び出されて、認証トークンが取得されます。このトークンは、モバイル・アプリが Cloud Object Storage にアクセスする際に使用するものです。
    7. モバイル・アプリが image-caching プラグインを使用して画像をフェッチします。
    8. モバイル・アプリ上で、同期化された (Cloudant 内の) データと (Cloud Object Storage 内の) 画像がダウンロードされて、ユーザーがデータと画像を操作できるようになります。ユーザーは詳細ページを表示して、画像および Google マップ内でマークされた地理位置情報を確認できます。
    9. ユーザーがモバイル・アプリ内でデータを表示して変更すると、モバイル・アプリがその新しいデータを JSONStore コレクション内に保管します。すると Mobile Foundation アダプターを使用して自動的に、コレクション内に保管されたデータが Cloudant データベースに同期化され、画像が Cloud Object Storage に同期化されます。

    他の (新たにログインした) ユーザーがホーム・ページ上で画面の更新ボタンをクリックすると、更新された問題レポートのリストが表示されます。

  2. オフラインのシナリオ

    セキュアなオフライン同期化のアーキテクチャー図

    オフライン同期化の前に、デバイスがオンライン上で認証に成功し、JSONStore パスワードが設定されている必要があります。

    1. デバイスがオフラインになっているときに、ユーザーがモバイル・アプリを起動してログインします。
    2. 正しいパスワードが入力されると、モバイル・アプリがその資格情報を使用して JSONStore コレクションを初期化します。
    3. ユーザー認証が成功すると (つまり、JSONStore が正常に初期化されると)、モバイル・アプリが前に同期化された JSONStore コレクションからデータを読み取り、ホーム・ページに項目のリストを表示します。
    4. ユーザーはリスト内の項目の詳細ページを表示できます。デバイスがオンラインになっていたときに詳細ページが表示されていれば、詳細ページの画像はキャッシュに入れられているため、オフラインでも画像を表示できます。Google マップ用の Cordova プラグインにより、地図のビューはオフラインでも確実に機能します。
    5. ユーザーは新しい都市問題を報告して、画像と地理位置情報をキャプチャーできます。
    6. その場合、モバイル・アプリは新しいデータを JSONStore コレクション内に保管し、画像とそのサムネイルをモバイル・デバイス上のローカル・ファイル・システム内に保管します。
    7. 後でデバイスがオンラインになったときに、モバイル・アプリは MFP 同期化アダプターを呼び出して自動的に JSONStore と Cloudant データベースの同期化を開始します。これにより、新しいデータが Cloudant データベースに送信されます。
    8. モバイル・アプリが MFP アダプターを呼び出して Cloud Object Storage サービスとやり取りするために使用する認証トークンをフェッチし、新しい画像を Cloud Object Storage にアップロードします。

    他の (新たにログインした) ユーザーがホーム・ページ上で画面の更新ボタンをクリックすると、新しく報告された都市問題とその詳細が表示されます。

Instructions

このパターンの詳細な手順については、README を参照してください。手順の概要は以下のとおりです。

  1. Ionic と MFP CLI をセットアップします。
  2. Cloudant データベース・インスタンスを作成し、サンプル・データを取り込みます。
  3. IBM Cloud Object Storage サービス・インスタンスを作成し、サンプル・データを取り込みます。
  4. Mobile Foundation サービス・インスタンスを作成し、MFP CLI を構成します。
  5. ソース・リポジトリーをダウンロードしてカスタマイズします。
  6. MFP アダプターをデプロイしてテストします。
  7. Android フォン上でアプリケーションを実行します。
  8. オフライン・モードでアプリの機能をテストします。

Related Blogs

Call for Code 2019 応募に向けて個別オンライン相談会の予約受付開始

皆さん、こんにちは。IBM デベロッパーアドボケイト戸倉彩です。 グローバルハッカソンは目標をもって仲間と一緒 […]

続けて読む Call for Code 2019 応募に向けて個別オンライン相談会の予約受付開始