データ・プライバシーを重視した、顧客ロイヤルティー向けモバイル・アプリのバックエンド

概要

このコード・パターンでは、Red Hat® OpenShift® on IBM Cloud™ 内のサンプルを使用して、マイクロサービス・ベースのバックエンドを OpenShift 4.3 内にデプロイする方法を説明します。このサンプルは、一連のモバイル・ビューをシミュレートするために Node.js ベースのサービスをデプロイする方法を説明するものです。

説明

人々がデータに対する認識を強め、オンラインでのデータ・プライバシーについて懸念する中、世界中の法規制ではソフトウェア・プロジェクトで顧客のデータを処理する方法を考慮することを要件とするようになっています。このパターンでは、サービス利用者の理解を深めようとする企業がデータを収集して使用できるよう、顧客ロイヤルティー向けモバイル・アプリのバックエンドとして機能する一連のマイクロサービスをデプロイします。このコード・パターンは GDPR (欧州一般データ保護規則) などの法規制に端を発しているものの、実際の一般公開アプリケーションではありません。ここで実装しているいくつかのデータ・プライバシー機能は、OpenShift 4 内でプライバシーを重視したバックエンドを作成するために考えられる方法を説明することを目的としています。

GDPR 標準では、個人データに関してユーザー (対象者) に使用可能にする操作に関する要件を定義しています。ただし、GDPR はテクノロジーには関係しないため、要件を実装するためのアーキテクチャーの構築は実装者の責任に委ねられることになります。

フロー

以下の図は、ユーザー認証アーキテクチャーのフローを示しています。

為替マイクロサービス・アーキテクチャーのフロー図

  1. ユーザーがモバイル・アプリ・シミュレーターを使用してアカウントを作成します。すると、nodejs サーバーが App ID サービスの API にアクセスします。このサービスは、独自のクラウド・ディレクトリー内にユーザーのアカウントを作成します。
  2. アカウントが作成された後、モバイル・アプリのシミュレーターがユーザーをログインさせます。ユーザーがログインすると、App ID サービスはそのユーザー用に有効なアクセス・トークンと ID トークンを作成します。モバイル・アプリはこれらのトークンを保管して、後で認証に使用できるようにします。
  3. モバイル・アプリは前のステップで保管したアクセス・トークンを使用して、Liberty マイクロサービス内の保護された API を正常に呼び出すことができます。モバイル・アプリは、ユーザー・プロファイルをデータベース内に作成するために、認証ヘッダー内にアクセス・トークンを格納して API を呼び出します。
  4. App ID インスタンスには Liberty サービスが統合されています。この Liberty サービスがリクエストの認証ヘッダーに格納されたアクセス・トークンを検証します。
  5. トークンが有効であれば、ユーザー・プロファイルがデータベース内に作成されます。アクセス・トークンには、リクエストを送信したユーザーのユーザー ID が含まれています。

App ID サービスでの Auth トークン・フローでは、ID プロバイダーと Liberty が Auth トークンを使用してユーザーを認証します。

Liberty マイクロサービスは保護された API であり、認証ヘッダーを要求します。リクエストに認証ヘッダーが含まれていなければ、そのリクエストの処理は許可されないため、401 (無許可) レスポンスを送信します。マイクロサービスはこの認証を行うために、マネージド ID プロバイダーである App ID を利用します。これにより、簡単に API を保護してユーザーの ID 情報を管理できるようになっています。

モバイル・アプリ・シミュレーターには App ID インスタンスが統合されます。そのため、ユーザーがログインするたびに、アプリは保護された API へのリクエストに使用できるよう、ユーザーのアクセス・トークンを保存します。アクセス・トークンはデフォルトで 1 時間後に期限切れになります。期限切れになった後は、再びユーザーの認証が必要になります。

認証ヘッダー内にトークンが格納されたリクエストが送信されると、Liberty マイクロサービスは App ID 統合を使用して、そのトークンが有効であることを確認します。確認が取れると、リクエストの処理を続行します。Liberty マイクロサービスは、リクエストを送信したユーザーを識別するために、トークン内に含まれるサブジェクト ID とユーザー ID も利用します。例えば、ユーザーが自分の獲得したポイント数をリクエストしてきた場合、データベースからそのユーザーに該当するプロファイルをプルしなければなりません。その判断をするのに利用できるのが、トークン・ペイロード内に含まれるユーザー ID です。

手順

このコード・パターンを試すには、GitHub リポジトリー内の README.md ファイルに記載されている詳細な手順を参照してください。手順の概要は以下のとおりです。

  1. OpenShift 4.3 クラスターをセットアップします。
  2. App ID インスタンスをセットアップします。
  3. PostgreSQL インスタンスとスキーマをデプロイします。
  4. マイクロサービスで使用する Kubernetes シークレットを生成します。
  5. 残りのサービスをデプロイします。