TL;DR: In August 2019, 2019 年 8 月、Auth0 は開発者の皆様が最新のアイデンティティ レイヤーである OpenID Connect (OIDC) を利用して簡単かつ安全なユーザー認証メカニズムを提供できるよう、The OpenID Connect ハンドブック を公開しました。この eBook では、アプリを OpenID Connect プロバイダーと連携させるうえで押さえておきたい主なコンセプトをもれなく説明しています。今すぐ eBook をご覧になりたい方は、こちらのリンクから無料でダウンロードできます。

この記事では、ハンドブックでどのようなトピックが取り上げられているのか、大まかにご紹介します。

"OpenID Connect ハンドブックではエンド ユーザー認証を安全に処理するために必要なあらゆる知識を身につけることができます"

OpenID Connect ハンドブックの内容

2019 年 10 月現在、このハンドブックでは OpenID Connect に関連する 6 つの主要トピックについて取り上げています。トピックごとに 1 つの章を設け、さらに細かいセクションに分割しました。OpenID Connect の概要、誕生した背景、この ID レイヤーを使用してアプリケーションを保護する方法を確認することができます。

  1. はじめに
  2. OpenID Connect の概要
  3. OpenID Connect のしくみ
  4. OpenID Connect と従来の Web アプリケーション
  5. 従来の Web アプリと委任型の認可フロー
  6. OpenID Connect とシングルページ アプリケーション

以下のセクションでは、各章の内容を 1 つずつご紹介します。学習したいトピックが明確な場合は、eBook を無料でダウンロードしてすぐにご確認いただけます。

はじめに

このハンドブックの「はじめに」の章では、OpenID Connect 自体のコンセプトではないものの、学習を始める前に理解しておく必要のある基本的なトピックについて説明します。それは「エンティティ」と「アイデンティティ (ID)」という用語の定義と、2 つの相互関係です。ここでは、1 つのエンティティは複数のアイデンティティを持ち、ユーザー (他のエンティティ) はアイデンティティを通じてエンティティを認識するということを学習できます。

Every entity have multiple identities that others use to perceive them.

その後、「認証」と「認可」という用語について、相互の関連性、一方から他方が生じるしくみ、両者の違いについて説明します。認証と認可は重要な用語ですが、世界中の IT 企業の従業員でさえも混乱することが多いため、しっかりと理解しておきましょう。

Authentication and authorization are topics that cause confusion and that are often used interchangeably by mistake.

OpenID Connect の概要

最初の章で基本的なコンセプトを確認したら、次は OpenID Connect について見ていきましょう。この章ではまず、OpenID Connect の認証トランザクションのしくみを大まかに解説します。次に、他の認証メカニズムと、IT コミュニティが単純なユーザー名とパスワードから Kerberos、SAML、OpenID Connect へと移行した過程について簡単に説明します。

A brief illustration that shows how SAML works.

続いて OpenID Connect 仕様の詳細に入り、このアイデンティティ レイヤーのベースとなった OAuth 2.0 について取り上げます。最後に、このテクノロジがどのような場面で役立つかを確認できるように、OpenID Connect のユース ケースをいくつか紹介します。

OpenID Connect のしくみ

第 3 章は、OpenID Connect 仕様の内部のしくみについての説明です。ここでは、演習中に使用する OpenID Connect プロバイダーをセットアップし、これから学習するサンプルを実行するためのローカル環境を準備します。この eBook の目標は、OpenID Connect を使用してアプリケーションを保護する方法について順を追って説明することであり、演習ではハードルを低くするために、世界で最も人気のあるプログラミング言語 (JavaScript) を使用します。

Creating an OpenID Connect provider to use throughout the handbook exercises

OpenID Connect と従来の Web アプリケーション

OpenID Connect プロバイダーを作成し、ローカル開発環境を準備したら、次の章ではこの eBook の最初の演習を行います。この章では演習を通じて、認証フローなどの重要なトピックについて説明します。OpenID Connect の学習に関しては、他にも便利なリソースがインターネット上に公開されていますが、実際に使い始める段階に至るまでに長々と理論について書かれているものばかりだったため、この eBook は早々に演習に取り掛かれるように作成しました。

この eBook では、OpenID Connect の抽象的なコンセプトを実際に使用しながら学習できます。つまり、OpenID Connect でサポートされる各種認証フローと抽象的な関連用語を逐一解説するのではなく、簡潔な説明にとどめ、すぐに実践に移るのです。

たとえば、認証フローの説明を読み終えたら、すぐに認証フローを使用できるように構成されています。さらに、OpenID Connect プロバイダーの特徴である検出エンドポイントの使用方法についても触れています。その他にも、認証コールバックやユーザー プロファイルなど、重要なトピックについて説明します。

従来の Web アプリと委任型の認可フロー

OpenID Connect によってエンド ユーザー認証を安全に行う方法について学習したら、次に OpenID Connect と OAuth 2.0 を使用する代表的なシナリオである「委任型の認可」について説明します。委任型の認可に関して必要な知識は、この章で詳しく説明していますが、簡単に言えば、委任型の認可とはユーザーに代わって行動する許可をアプリに与えることです。この eBook を含め、あらゆる場所で取り上げられる例として、ツイートの予約投稿を行うサードパーティ製アプリケーションが挙げられます。このシナリオにおいて、サードパーティ アプリは設定した日時にユーザーの代わりにツイートする許可をユーザーに求める必要があります。アプリがツイートを作成するために Twitter に対して要求を発行する場合、アプリはユーザーに代わって行動したことになります。

Delegated authorization sample where the app wants to tweet on behalf of the user.

OpenID Connect とシングルページ アプリケーション

ハンドブックの最後の章では、OpenID Connect を使用してシングルページ アプリケーションを保護する方法について説明します。現代のインターネットでは、多数のアプリが顧客に優れたユーザー エクスペリエンスを提供するために、このアプローチを使用しています。この eBook でも、Web 開発に関して最も人気のある手法を取り上げないわけにはいきません。

この章では、PKCE (Proof of Key for Code Exchange) などの用語について説明し、シングルページ アプリと OpenID Connect プロバイダーの連携を行います。さらに、「暗黙的な許可」というよく使用される代替手段と、現在はこのアプローチが推奨されない理由も紹介します。シングルページ アプリは通常、クラウド プロバイダー内で静的ファイルとしてホストされるため、この章でも委任型の認可を使用します。つまり、ユーザーに所属するデータを API に格納し、シングルページ アプリはユーザーに代わってこの API を使用する許可をユーザーに求める必要があります。

Single-Page Apps can securely authenticate end-users with OpenID Connect providers by using PKCE.

まとめ

ご紹介したように、OpenID Connect の概要や OpenID Connect を使用してアプリケーションを保護する方法についてご興味をお持ちでしたら、OpenID Connect ハンドブックはぴったりの教材です。この eBook をお読みになれば、アプリを OpenID Connect クライアントとして動作させ、ユーザーに代わって API を使用させるために必要なあらゆる知識を学ぶことができます。また、人気のある公式の SDK (Auth0 でサポートされている SDK など) を使用して効率化する方法についても紹介するなど、任意のアプリケーションを OpenID Connect プロバイダーと連携するために必要なコーディングの知識をすべて紹介するだけにとどまらず、この目標をより簡単に達成するための方法についても解説しています。そのため、構成ミスが発生した場合にデバッグを行ったり、独自性の高いアプリを構築する作業に可能な限り集中したりできるようになります。

OpenID Connect ハンドブックやアイデンティティ、認証、認可に関してお困りのことがございましたら、以下のコメント欄でお知らせください。

"OpenID Connect は、アプリケーションを簡単に保護できる強力なツールです"

Auth0 について

Auth0は、アプリケーションビルダーのためにつくられた最初のアイデンティティ管理プラットフォームであり、カスタムビルドアプリケーションに必要とされる唯一のアイデンティティソリューションです。世界中のアイデンティティを守り、イノベーターがイノベーションを起こせるようにするというミッションのもと、Auth0はシンプルで、拡張性のある、スケーラブルなプラットフォームを提供し、あらゆるオーディエンスのために、あらゆるアプリケーションのアイデンティティを守ります。Auth0は毎日1億回以上のログインを保護し、法人企業が信頼されるエレガントなデジタルエクスペリエンスを世界中の顧客に提供できるようにします。

より詳しい情報に関して、https://auth0.com/jp/もしくは@auth0_jp on Twitterをご覧ください。