アドオンの "ユーザーアクセスリスト" の作成
最終更新日 2020年10月13日(火)
多くの場合、アドオンのユーザーを管理するために少なくとも 1 つのログインツールをセットアップします。Heroku で提供されるアドオンのシングルサインオン統合を使用すると、ユーザーはアプリのダッシュボードから自分の Heroku アカウントを使用して直接ログインできますが、アドオンによっては、独自のログインシステムを備えていたり、機能を追加するために GitHub のようなサードパーティの OAuth サービスを使用したりする場合があります。アドオンの SSO サービスと独自のログインシステムに共通の統合ログインリストを作成して、アドオンでのアクセス許可の管理をずっと容易にすることができます。
この記事では、パートナー向け Platform API にリクエストを送信して “ユーザーアクセスリスト” を作成する方法について説明します。
前提条件
- パートナー向け Platform API へのアクセスと使用
- Heroku アドオンリソースの UUID。プロビジョニング時に記録しておくか、既存の Get App Info API エンドポイントから取得します。リソースの UUID は変わることがなく、パートナー向け Platform API にアクセスするためのプライマリ ID であるため、Get App Info API から取得するのではなく最初から保存しておくことを強くお勧めします。
概念
この機能を構築するために理解する必要がある Heroku の概念は 2 つあります。
最初の概念はアプリ共同作業者です。これは、アプリの所有者によってアプリへのアクセスを許可されたユーザーのことです。
2 番目の概念はチームとチームのメンバーリストです。ユーザーは、アプリの共同作業者リストか、アプリを所有するチームのメンバーリストのどちらかに登録することができます。アドオンにアクセスできるユーザーの完全なリストを作成するには、アプリの共同作業者リストとチームメンバーリストの両方をリクエストする必要があります。
実装
アプリにアクセスできる Heroku ユーザーの完全なリストを得るには、以下をリクエストする必要があります。
- GET https://api.heroku.com/addons/:resource_uuid -> アプリ名を取得
- GET /apps/:app_name/collaborators -> アプリ共同作業者ユーザーのリスト
- GET /apps/:app_name -> シリアル化された応答に “team” オブジェクトが含まれているか確認し、ある場合はチームの UUID を保存します
- 上記のチームアプリの場合: GET /teams/:team_uuid/members
アプリが組織の所有かどうかを調べるには、GET /apps/:app_name
の応答から "team"
オブジェクトを探します。このオブジェクトからチームの UUID を特定します。次に、GET /teams/:org_uuid/members
エンドポイントをリクエストします。このリストを上記のアプリ共同作業者リストと結合します。 SSO リクエスト中に指定されたメールアドレスがこの結合リストに含まれている場合、このユーザーは指定されたアプリケーションのアドオンにアクセスできます。
問題となるアプリごとに、リソースをスコープとした当該アプリケーション用のトークンをパートナー向け Platform API で使用して、このプロセスを繰り返す必要があります。
将来的には、すべてのアプリまたは特定のアプリを対象に、どのユーザーがアドオンにアクセスできるかを示す、ある種の標準化されたエンドポイントを設置したいと考えていますが、API でアクセスを指示するためのそのようなパターンはまだ整備されていません。このようなエンドポイントが機能するしくみについての提案がありましたら、エコシステムチームまでお知らせください。