Skip to main content

はじめに

本記事では、複数の開発者がそれぞれクライアントアプリ開発者コンソールへのログインアカウントを持ち、各人が個別にクライアント情報を管理するための、Web API の実装と Authlete の設定について説明します。

Web API の実装

Authlete は、クライアントアプリ開発者コンソールのログイン ID とパスワードの検証、そしてアクセス資格確認を、外部の Web API に移譲できます。この Web API は少なくとも以下の処理を行う必要があります。
  1. Authlete からリクエストを受信
  2. Authorization ヘッダーの検証
  3. ID/パスワードからユーザーを識別
  4. Authlete サービスへのアクセス資格の確認
  5. Authlete 内のユーザー識別子・表示名の決定
  6. Authlete にレスポンスを返却
developer-auth-cb_ja 仕様の詳細は以下をご参照ください。

Authlete サービスの設定

Authlete のサービス管理者コンソールにて、対象の Authlete サービスに対して、外部の Web API に接続するための情報を設定します。 Screen_Shot_2020-08-13_at_3
「開発者認証」タブに表示される「SNS」関連の設定は deprecated となっており、利用できません。
以上により、対象の Authlete サービスは、クライアントアプリ開発者コンソールへのログインについて、ID / パスワードの照合とアクセス資格確認を Web API に移譲するようになります。

実行例

ここでは、お客さまの環境において、クライアントアプリ開発者を次のように管理しているとします。
  • ユーザー情報
  • グループ情報
以下、それぞれの ID を用いたログインに対して期待される動作の例を示します。

例 1: test1/test1 でログイン

まず、クライアントアプリ開発者コンソールにて、ユーザーが test1/test1 でログインを試みたとします。 multiple-developer-accounts_1 開発者認証が設定されている Authlete サービスは、Web API に対して以下のようなリクエストを送信します。(以下、それぞれの例は見やすさのため折り返しています)
リクエストを受けた Web API では、subject が dev01、displayName が Developer Group 01 であると決定し、Authlete にレスポンスを返却するでしょう。
ユーザーに対しては以下のようなログイン後のページが表示されます。 multiple-developer-accounts_2 以下はログイン後に「アプリ作成」をクリックし、新規にクライアント情報を登録した例です。“Test Client 01” が、Developer Group 01 (Authlete の subject としては “dev01”) に対して追加された状態です。 multiple-developer-accounts_3

例 2: test2/test2 でログイン

次に、クライアントアプリ開発者コンソールからログアウトし、test2/test2 でログインを試みたとします。multiple-developer-accounts_4 Authlete サービスが Web API に送信するリクエストは以下のようになります。
Web API は、先ほどの test1 のときと同様、subject が dev01、displayName が Developer Group 01 であると決定し、Authlete にレスポンスを返却するでしょう。
その結果、ログイン後のページは以下のようになります。先ほど test1 にてログインして追加したクライアント情報が表示されます。\ multiple-developer-accounts_5

例 3: test3/test3 でログイン

それでは、グループの異なる ID でログインした場合はどうなるでしょうか。クライアントアプリ開発者コンソールからログアウトし、test3/test3 でログインを試みたとします。 multiple-developer-accounts_6 Authlete サービスが Web API に送信するリクエストは以下のようになります。
Web API は、subject が dev02、displayName が Developer Group 02 であると決定し、Authlete にレスポンスを返却するでしょう。
その結果ユーザーは、先ほどとは異なる subject である dev02 としてログインします。 test1 にてログインして追加したクライアント情報が表示されないことにご注目ください。 multiple-developer-accounts_7

例 4: test4/test4 でログイン

最後に、test4/test4 でログインを試みた場合です。\ multiple-developer-accounts_8 Authlete から Web API へのリクエストは以下のようになります。
test4 のステータスは suspended であるため、ログインを拒否することが期待されます。Web API は以下のレスポンスを返却するでしょう。
このレスポンスを受けて、Authlete はログインを拒否します。 multiple-developer-accounts_9 以上のように動作する Web API を実装することにより、複数のユーザーが、それぞれ異なる ID/パスワードを用いて、クライアントアプリ開発者コンソールにログインできるようになります。