本記事は「Introducing IdentiFlows.dev: A Visual Reference for Identity Flows」を翻訳した記事です。
OAuth 2.0やOpenID Connectを扱ったことのある開発者なら誰でも経験があるはずです。フローの正確なシーケンスを再確認する必要があるのに、記憶にある図は仕様書やブログ記事、あるいは2年前のカンファレンスのスライドのどこかに散在しています。メカニズムは十分に文書化されていますが、適切なタイミングで適切な図を見つけるのは容易ではありません。
Auth0とチームの支援を受けながら、ギャップを埋めるためにIdentity Flow Diagramsを構築しました。
Identity Flow Diagramsとは
Identity Flow Diagramsは、一般的なアイデンティティプロトコルの背後にあるシーケンス図の視覚的なリファレンスを開発者やアーキテクトに素早く提供するウェブサイトです。各フローには専用のページがあり、以下の内容が含まれます。
- フローの目的と使用するタイミングを説明する短い紹介。
- 関係者間の完全なやり取りを示すシーケンス図。
- 各段階で何が起こるかの段階的な解説。
目標はシンプルです。仕様書を掘り下げたり、半年前に読んだドキュメントページの記憶をたどったりするよりも早く情報を提供します。
現在の提供内容
ウェブサイトは現在4つのカテゴリに分かれています。具体的にはUser Login & SSO、Application & API Security、Security Enhancements、Othersです。

現在、8つのフローを網羅しています。
- OAuth 2.0 Authorization Code flow(およびPKCEバリアント)。
- OpenID Connect Authorization Code flow with PKCE。最新のアプリの多くで推奨されるログインフローです。
- OpenID Connect Implicit flow。一部のコンテキストではまだ使用されていますが、Authorization Code with PKCEが推奨され非推奨となっているため、レガシーとして明記して含めています。
- SAML 2.0 SP-Initiated SSO。エンタープライズコンテキストで最も使用されるSAMLフローの一つです。
- OpenID Connect Discovery。プロバイダーの設定と公開鍵を取得するために使用します。
- DPoP-Bound Access Token RequestおよびDPoP-Bound Access Token Usage。トークンを特定のキーペアにバインドするメカニズムを網羅しています。
静的な図はフロー全体の概要を把握するのに役立ちますが、インタラクティブモードではフローを進めながら各ステップで何が起こるかを学習できます。

初期リリースについて
プロジェクトの現状について率直にお伝えします。完成したプロジェクトではなく、ごく初期のリリースです。初期のフローセットは開発者から最も頻繁に質問される内容を反映しており、最終的にウェブサイトに含まれるすべてではありません。近日中に追加を予定しているフローは以下の通りです。
- OAuth 2.0 Client Credentials flow。マシンツーマシンシナリオ向けです。
- OAuth 2.0 Device Authorization flow。ブラウザを持たないデバイスや入力が制限されたデバイス向けです。
- WebAuthn。パスワードレス認証向けです。
さらに、Token ExchangeやPrivate Key JWT認証など、多くのバックログも控えています。
フィードバックのお願い
プロジェクトの方向性が固まる前の段階こそ、フィードバックが最も役立ちます。identiflows.devを試して不明な点や不足している点、または間違っている点があればぜひお知らせください。下のコメント欄にメッセージを残してください。
About the author
Andrea Chiarelli
Principal Developer Advocate
I have over 20 years of experience as a software engineer and technical author. Throughout my career, I've used several programming languages and technologies for the projects I was involved in, ranging from C# to JavaScript, ASP.NET to Node.js, Angular to React, SOAP to REST APIs, etc.
In the last few years, I've been focusing on simplifying the developer experience with Identity and related topics, especially in the .NET ecosystem.
