APIを使ったモバイルアプリケーション

この例では、ExampleCoという架空の会社のためにタイムシートAPIを作成します。このAPIにより、従業員・請負業者のタイムシートエントリーが管理できるようになります。

また、このAPIを使って、タイムシートエントリーを表示・記録してそれを一元化されたタイムシートデータベースに送るモバイルアプリケーションもビルドします。

TL;DR

  • Auth0はAPIエンドポイントへのアクセスを保護する手段として、API認証および認可を提供しています(「API認証と認可」を参照)
  • モバイルアプリユーザーの認可およびAPIのアクセス付与に、Auth0はProof Key for Code Exchange(PKCE)を使った認可コードフローをサポートしています(「Proof Key for Code Exchange」を参照)
  • モバイルアプリとAPIはAuth0 Dashboardで構成する必要があります(「Auth0の構成」を参照)
  • ユーザーの権限は、認可拡張機能を使用して強制することができます(「認可拡張機能を設定する」を参照)
  • APIは、APIへの呼び出し時にHTTP認可ヘッダーに有効なアクセストークンが渡されることを確認することで保護されます(「APIを実装する」を参照)
  • Auth0.Android SDKを使用して、モバイルアプリユーザーを認可し、有効なアクセストークンを取得し、APIを呼び出すことができます(「ユーザーを認可する」を参照)
  • モバイルアプリは、IDトークンをデコードしてユーザーのプロファイル情報を取得できます(「ユーザープロファイルの取得」を参照)
  • ユーザーに付与されたスコープに基づいて、UI要素を条件付きで表示できます(「スコープに基づいた条件付きUIの表示」
  • モバイルアプリは、APIへの呼び出し時にHTTP認可ヘッダーにアクセストークンを提供します(「APIを呼び出す」参照)
  • モバイルアプリのユーザーアクセストークンは、セッション中にログインしなおす必要がないように更新できます(「トークンを更新する」を参照)

前提条件

ExampleCoは、コンサルティングを行うスタートアップ企業です。現在、従業員は約100名で、いくつかの業務を社外の請負業者に外注しています。従業員と請負業者は、毎週タイムシートに記入する必要があります。

そこで同社は、通常のWebアプリ向けシングルサインオンで紹介しているシナリオの通り、タイムシートのアプリケーションを構築しました。社内にいる従業員は、このWebアプリを使ってタイムシートに入力していますが、会社は、会社の外にいる従業員や請負業者にはモバイルアプリケーションを使ってもらいたいと考えています。アプリは、APIを使って、タイムシートエントリーのログを取り、そのデータを一元化されたタイムシートデータベースに送ります。また、管理職によるタイムシートエントリーの承認も可能になります。

目標と要件

ExampleCoは、フレキシブルなソリューションを構築したいと考えています。複数の従業員や請負業者が同時にタイムシートエントリーのログを取る可能性があるだけでなく、外部システムからタイムシートエントリーをアップロードする一括処理も実行できなければなりません。

そのため、会社は、単一のタイムシートAPIを開発して、このモバイルアプリだけでなく、すべてのアプリで時間を記録できるようにしようと決断しました。会社は、このような用途に対応できるフレキシブルなセキュリティアーキテクチャを実装したいと考えています。アプリケーションのコードやビジネスロジックの大部分を、他のアプリケーションと共有できるようにしたいのです。

タイムシートAPIには、認可されたユーザーとアプリケーションだけがアクセスできるようにする必要があります。

もっと詳しく