膨大なAuth0のドキュメントを整理してみた

Auth0は"Developer Frendly"を社訓の一つとして掲げており、サンプルコードやチュートリアル等、Application開発者の皆様に有益な情報を多くご提供しています。中でもドキュメントは充実しており、ID関連だけに留まらずApplication開発全般に関するコンテンツを取り揃えています。しかしながらコンテンツが多過ぎて、欲しい情報を探しているうちに迷子になってしまうとのお声を多く頂いています。この記事は、Auth0のドキュメントを探すシーン毎に適切なコンテンツを整理して、Application開発者様他、様々な職責の方が必要な情報に素早く到達頂くことを目的としています。

# Area1. 非開発者様向け
Area1はビジネス開発者、リサーチャー、プロジェクトマネージャ等、直接Application開発を行っていない方を主に対象としたカテゴリです。
## シーン1. Auth0とは何なのか?概要を把握したい
[Getting Started](https://auth0.com/docs/getting-started)の全7章をご参照頂くことをおすすめします。一部詳細なハンズオンチュートリアルも含まれていますが、全体的に概要説明を中心として構成されており短時間で概要を把握することが可能です。次に[Get Started with Auth0 Video Series](https://auth0.com/docs/videos/get-started)を閲覧頂くことをおすすめします。[Getting Started](https://auth0.com/docs/getting-started)の内容をより具体化しており、概要の理解をさらに深めることができます。
<blockquote class="twitter-tweet"><p lang="und" dir="ltr"><a href="https://t.co/DZ8D7C8Bhe">https://t.co/DZ8D7C8Bhe</a></p>&mdash; Hisashi Yamaguchi (@cookiewanwan) <a href="https://twitter.com/cookiewanwan/status/1210042161728589825?ref_src=twsrc%5Etfw">December 26, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

## シーン2. 何故Auth0が誕生したのか?背景を知りたい
[The OpenID Connect Handbook](https://auth0.com/resources/ebooks/the-openid-connect-handbook)をご一読頂くことをおすすめします。66ページほどのハンドブックですが、後半はハンズオンチュートリアルが中心となっており、非開発者様は前半の20ページまでをご一読頂ければ良いかと思います。ID管理の変遷(ID/Password〜Directory Service/SAML Federation)からはじまり、各々の時代で発生していたチャレンジからOpen ID Connectが誕生した背景がまとまっています。次に[Learn Identity Video](https://auth0.com/docs/videos/learn-identity)を閲覧頂くことをおすすめします。Auth0でPrinciple Solution Architectを努めていて”ID界の神”と呼ばれている、Vittorio Bertocciが分かりやすくID全般を解説しています。
<blockquote class="twitter-tweet"><p lang="und" dir="ltr"><a href="https://t.co/9DgiSlGV0F">https://t.co/9DgiSlGV0F</a></p>&mdash; Hisashi Yamaguchi (@cookiewanwan) <a href="https://twitter.com/cookiewanwan/status/1210041680373547010?ref_src=twsrc%5Etfw">December 26, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

## シーン3. Auth0を導入した場合の導入効果を調査したい
[The Total Economic Impact of Auth0](https://auth0.com/resources/whitepapers/forrester-tei-research-case-study/thankyou)をご一読頂くことをおすすめします。Forrester社が作成した調査レポートで、ID関連の開発・運用コスト、ユーザサインアップやログイン関連のトラブル対応負荷等、複数の観点で定性・定量的に比較・評価されています。調査レポートはForrester社のTotal Economic Impactフレームワークを用いて作成されており、Auth0を導入することによるメリット(例/ID関連の開発工数、運用工数の削減)だけでなくリスクについても触れており、より適正な評価に利用できると思います。

## シーン4. Auth0を利用した開発プロジェクトではどんなテーマがあるのか？全体を俯瞰したテーマを知りたい
[B2C IAM Project Planning Guide](https://cdn2.auth0.com/docs/media/articles/architecture-scenarios/planning/B2C-Project-Planning.pdf)をご一読頂くことをおすすめします。Auth0を利用したApplication開発で議論すべき10のテーマ(アーキテクチャ・プロビジョニング・認証・ブランディング・自動化・品質保証・プロファイル管理・認可・ログアウト・運用)に沿って、プロジェクトを円滑に進めるために各々のフェーズでどんな活動をすべきかをまとめています。 

# Area2. 開発者様向け
Area2はApplication開発者、アーキテクト、SRE等、開発を中心とした技術的な活動をミッションとされている方を主に対象としたカテゴリです。

## シーン5. ApplicationとAuth0の連携を実際に試してみたい
先ずは[初めてのAuth0ハンズオン](https://qiita.com/hisashiyamaguchi/items/2d0bcae052077f6ae4a4)をお試し頂くことをおすすめします。無料アカウントの作成方法から、どのように使うのかを短時間でご習得頂くことに主眼を置いています。次に[Quick Start Tutorial](https://auth0.com/docs/quickstarts)をお試し下さい。Applicationのタイプ(Mobile, SPA, Traditional, M2M)に応じた、実際にApplicationを修正しながらAuth0と連携するハンズオンチュートリアルとなっており、Open ID Connect/OAuth2.0に準拠したコーディングアプローチをご習得頂くことができます。

## シーン6. Auth0のAPIに実際にリクエストを送信してみたい
[Auth0 APIs](https://auth0.com/docs/api/info)をご参照下さい。Auth0の2つのAPI(Authentication API, Management API)の各End Pointのトップページになっており、最短でEnd Pointの詳細に辿りつくことができます。Authentication APIはAuth0が提供しているサービスコンポーネントの中で最も”生”なコンポーネントでユーザサインアップ、ログイン等、認証・認可に必要なEnd Pointを公開しています。Management APIはAuth0のGuI Dashboardを裏で支えているAPIでDashboardでできる作業と同じことが可能なEnd Pointを公開しています。Management APIのAccess Tokenを設定することで、端末にそのままコピーペーストして実行できるcurlコマンドをダイナミックに作成できます。以下、手順です。

[Management API](https://auth0.com/docs/api/management/v2)にアクセスして右上の"LOGIN"を押してテナント管理者でログインします。

<img src="https://i.imgur.com/2Aw53WQ.png" width=70%>

必要に応じて、"Switch Tenant"を選択して当該のテナントに切り替えます。

<img src="https://i.imgur.com/Bu8zR9c.png" width=70%>

Auth0のDashboard左ペインの"APIs"をクリック、”Auth0 Management API”を選択して上の"API Explorer"タブの"Token"をコピーします。
**<font color="DarkOrange">このTokenはManagement APIへのフル権限を持ったTokenです。このTokenをManagement APIのドキュメントにセットしてダイナミックなcurlコマンドを作成します。</font>**

<img src="https://i.imgur.com/xg21qEn.png" width=70%>

[Management API](https://auth0.com/docs/api/management/v2)にアクセスして左上の"SET API TOKEN"をクリックしてコピーしたAccess Tokenをペースト、"SET TOKEN"を押します。

<img src="https://i.imgur.com/IpJzmLE.png" width=70%>

任意のEnd Pointで"get curl command"をクリックするとAccess Tokenがセットされた実行可能なcurlコマンドが出力されます。

<img src="https://i.imgur.com/rZIGstI.png" width=70%>

## シーン7. Auth0が公開しているSDKのソースを参照してみたい
[Auth0 Libraries](https://auth0.com/docs/libraries)をご参照下さい。Auth0が公開している65以上のSDKのGitHub Repositoryのトップページになっており、最短でSDKのRepに辿りつくことができます。

## シーン8. Auth0だけでなく、モダンなApplicationを開発する詳細な方法を知りたい
[Auth0 Developer Blog](https://auth0.com/blog/developers/)をご参照頂くことをおすすめします。様々な言語やフレームワーク、実際の現場で起こりうる認証・認可のシナリオに沿った詳細なチュートリアルを公開しています。コンテンツはAuth0のテクニカルコンテンツライターだけでなく、社外のエンジニア様にも寄稿頂いており、Auth0に囚われずセキュアでメンテナンス性が高いモダンなApplication開発のアプローチを学ぶことができます。

## シーン9. Tokenベースの認証について深く知りたい
[Tokens used by Auth0](https://auth0.com/docs/tokens)をご一読頂くことをおすすめします。Auth0が扱う主要なToken(ID Token, Access Token, Refresh Token, IdP Provided Access Token, Management API Token)のトップページになっており、各々の詳細に最短で辿りつくことができます。次に[JWT Handbook](https://auth0.com/resources/ebooks/jwt-handbook/thankyou)をご一読下さい。JSON Web Tokenが誕生した背景から始まり、メリット・デメリット、セキュリティの考慮が詳細に網羅されています。

## シーン10. とにかく色々何でも知りたい
Googleに、”Auth0 xxxx xxxx”と聞いて下さい。膨大なドキュメントの中からお探しのドキュメントが必ず引っかかります。(例)"auth0 application flow"を聞いてみると[Authentication and Authorization Flows](https://auth0.com/docs/flows)がトップに出てきます。