Repository navigation
OTR_MPASDevelopmentHistory
汎用認証サイト(MultiPurposeAuthSite、MPAS)が、いつ・何を契機に・どう作られてきたかを、時系列で読めるようにまとめる。
版ごとの変更点は リリース情報・詳細なリリース情報 に任せ、ここでは**開発の流れ(時期の区切りと、各時期の動機)**だけを書く。
- 情報源:MultiPurposeAuthSite リポジトリのクローン(Git の参照系コマンドのみ)。
基準はorigin/develop(8a1c8e4e、2026-11-09、PR #349 のマージ)。
origin/5th_agentには、この後(2026-11-09 〜 11-14)の未マージの作業が 34 コミットあるが、本ページには含めない。 - コミット数は、
origin/developに入っているコミット(マージを含む)の、年ごとの数である。 - 事実(日付・数・変更の内容)と、読み取り(なぜそうなったか)を分けて書く。読み取りは「読み取り」と明記する。
| 年 | コミット | 時期の特徴 |
|---|---|---|
| 2017 | 137 | 立ち上げ。β(2017-05-19)→ 初版 01-00(09-27) |
| 2018 | 100 | OAuth2 / OIDC の周辺仕様の拡充(01-10、01-20) |
| 2019 | 128 | STS(SAML2・FAPI Part 2)と ASP.NET Core 版(01-80、01-90) |
| 2020 | 28 | CIBA・PPID(01-95) |
| 2021 | 18 | Device Flow、.NET 5(01-99) |
| 2022 | 5 | .NET 6、CIBA の Authentication Device(02-00、04-05) |
| 2023 〜 2025-11 | 0 | 停止(3 年 8 か月) |
| 2025-12 〜 2026-03 | 4 | 再起動(Reboot 1〜3) |
| 2026-09 〜 11 | 513 | エージェントによる分析と段階的な修正(1st〜5th_agent) |
- 年ごとの山は、2017〜2019 年(人が作った 3 年)と 2026 年の 9〜11 月(エージェントと作った 3 か月)の 2 つ。
- 2026 年 9〜11 月の 513 コミットは、2017〜2022 年の全コミット(416)より多い。
- 2017-05-19 に初回コミット。同日に β(v00-50)を出した。
- Open 棟梁(OpenTouryo)のライブラリを使う認証サイトのリファレンス実装として始まった。
OAuth2 / OIDC の主要なグラントを Open 棟梁の部品で組む形は、この時期に決まった。 - 2017-09-27 に 01-00(Open 棟梁 02-10 と組み合わせ)。以降、版は Open 棟梁の版に追随する。
- 続く 01-10(2018-03-23)で、PKCE・Token Revocation・Introspection、Hybrid Flow を足した。
この時期の特徴は、新しい仕様が出るたびに、Open 棟梁側の部品とセットで MPAS に実装して確かめたこと。
| 版 | タグの日付 | 追加した主な仕様 |
|---|---|---|
| 01-20 | 2018-09-28 | FAPI Part 1、エンタープライズ IdP、GDPR |
| 01-80 | 2019-03-28 | ASP.NET Core 版の追加、FIDO2(WebAuthn) |
| 01-90 | 2019-09-27 | SAML2.0、FAPI Part 2(JAR・JARM) |
| 01-95 | 2020-06-16 | CIBA、PPID |
| 01-99 | 2021-03-29 | Device Authorization Grant、Keycloak 互換 |
- コミット数が最も多い区間は、01-20 → 01-80(127 コミット、473 ファイル)。ASP.NET Core 版を足したため。
この区間の 2018-12-26 〜 28 に、ASP.NET のパイプラインからの離脱があった(下の「転換点」を参照)。 - 2019 年を境に、net48 版と Core 版の 2 本立てが MPAS の構造の特徴になった。
以降の変更は、原則として両版に入れる。
01-20 までの net48 版は、OAuth2 / OIDC の IdP の処理を、ASP.NET のパイプラインに差し込む形で作っていた。
- OWIN の
UseOAuthBearerTokens(StartupAuth):Provider・AuthorizationCodeProvider・RefreshTokenProviderを差し込む。
UseOAuthAuthorizationServerは、最初から「不使用」(コメントで残すのみ)。理由は「OAuthBearerTokenEndpointPathが動かない」と、当時のコードのコメントにある。 - IIS の
IHttpModule(OpenIDConnectModule。Web.configの<modules>で登録)、ClientCredentialsFilter、OidcTokenEditor:
パイプラインの途中で、要求・応答を書き換えて ID トークンなどを足す。
これを、Issue #92・#95 の対応(ブランチ ImplSts、2018-11-30 〜)の中で、パイプラインに頼らない自前の実装(CmnEndpoints)に置き換えた。
エンドポイントは Controller(OAuth2EndpointApiController・AccountController)から CmnEndpoints を呼ぶ形になった。
| 日付 | コミット | 内容 |
|---|---|---|
| 2018-11-30 |
45d3e4c1 ほか |
#92 の対応を開始。同日に MultiPurposeAuthSiteCore(ASP.NET Core 版)を初期化 |
| 2018-12-13 | fc538891 |
「IdP の実装は、ほぼ完了。今後は STS のスクラッチ実装」 |
| 2018-12-26 |
861ac8eb・801ac602
|
CmnEndpoints・CmnAccessToken を TokenProviders/ 直下へ移動し、OidcTokenEditor を HttpMod の外へ出す |
| 2018-12-27 |
a5216bdf・7445a104
|
ClientCredentialsFilter・OpenIDConnectCodeFilter、TokenProviders/Oasp/ の 4 ファイル(ApplicationOAuthBearerTokenProvider・AuthorizationCodeProvider・RefreshTokenProvider・AccessTokenFormatJwt)を削除(約 1,000 行)。処理は CmnEndpoints に移る |
| 2018-12-28 | fb170115 |
OpenIDConnectModule(IHttpModule。666 行)を削除 |
| 2018-12-28 | c7cdb010 |
StartupAuth から UseOAuthBearerTokens ほか、OAuth の差し込みをすべて削除(177 行)。パイプラインからの離脱が完了 |
| 2019-01-10 | PR #101 |
ImplSts をマージ |
| 2019-03-28 | 01-80 |
離脱後の最初のタグ。Web.config の <modules> から OpenIDConnectModule の登録も外れている |
- 今の net48 版の
ANALYSIS.mdにも、「OAuth2 / OIDCの IdP 側はスクラッチ実装で、OAuthAuthorizationServerミドルウェアは使っていない」とある。 - 読み取り:離脱の目的は、パイプラインの外から呼べる共通の核(
CmnEndpoints)を作ることだったと考えられる。
同じ日付(2018-11-30)に始めた ASP.NET Core 版(net48 版と同じ核を共有)、続く SAML2・FAPI Part 2(01-90)・CIBA・Device Flow は、この核の上に足したものである。
OWIN / IIS のIHttpModuleに依存したままでは、Core 版との共有も、仕様の追加も難しかったはずである。 - 後の 2026 年のエージェント期の修正(有効期限・PKCE・クライアント認証など)も、この自前の核を対象にしている。
仕様への適合と、その品質の責任が MPAS 自身にあるのは、この離脱の帰結でもある。
- 02-00(2022-04-05)で、.NET 6、CIBA の Authentication Device(Flutter の Android・iOS アプリ)、プッシュ通知の 2FA を入れた。
- 2022-04 を最後に、
developへのコミットが止まった。次のコミットは 2025-12-19 で、3 年 8 か月の空白がある。 - 読み取り:この間も、Open 棟梁の側は進んでいた(02-00 の時点の Open 棟梁は 03-00。その後 03-20 まで進む)。
MPAS が参照する Open 棟梁の版と、ランタイム(.NET 6)が、時間とともに古くなった状態で止まっていた、ということになる。
| 日付 | コミット | 内容 |
|---|---|---|
| 2025-12-19 | Reboot:1 | Open 棟梁 03-20 を参照するように(3_BuildLibsAtOtherRepos.bat)、パッケージの更新 |
| 2026-01-22 | Reboot:2 | net6.0 → net10.0、パッケージの更新、古い JavaScript の整理 |
| 2026-03-11 | #179・#180 | 不具合の修正 |
| 2026-03-30 | Reboot:3 | 開発用バッチの整備 |
- ここまでは人の作業で、中身は今のランタイム・今の Open 棟梁に載せ替えることに絞られている。
- 機能は増やしていない。まず動くところまで戻す、という順序。
2026-09-07 から、コーディング・エージェントに分析と修正を任せる形で再開した。
作業は、ブランチ(1st_agent_ph1・2nd_agent〜5th_agent)ごとに区切り、人が PR で検収してマージした。
| 段 | 期間 | PR のマージ | 中心になった作業 |
|---|---|---|---|
| 1st_agent | 09-07 〜 09-17 | #192〜#217(6 本) |
適合性の分析(ANALYSIS-IdP.md)。応答形式の不適合・異常系の 500・セキュリティ上の弱点を洗い出して直す。E2E テストの土台 |
| 2nd_agent | 09-17 〜 10-02 | #225〜#259(6 本) | 有効期限・PKCE・クライアント認証、PAR、ログアウト、署名鍵のローテーション、ID 連携 |
| 3rd_agent | 10-02 〜 10-08 | #268・#274 ほか |
redirect_uri・CORS・response_type、同意の永続化、WebAuthn の作り直し
|
| 4th_agent | 10-08 〜 10-23 | #301・#312・#313 | ID 連携の n 件化、DCR、DPoP、ログアウトの拡充、レート制限 |
| 5th_agent | 10-23 〜 11-09 | #319〜#349(6 本) | 責務ごとの分割とレビュー、設定の再編、テスト用のスタブ、品質の羅針盤、同時実行と DB の方言の見直し、FAPI の要件の登録ごとの強制 |
- 規模:2026-09-07 〜 11-09 の 64 日間に、513 コミット(1 日あたり平均 8、最大 18)。
- 02-00 から
origin/developまでの差分は、923 ファイル、+328,376 / −57,542 行。
行数の多くは、E2E テスト(Tests/E2ETests)と、再配置・分割による移動。
この 3 か月の間に、進め方そのものが段階的に整っていった。ここが、機能の追加と並ぶ、この期の成果である。
-
分析が先(1st):まず適合性の分析表(
ANALYSIS-IdP.md)を作り、項目に番号(A・B・C・D・E)を振って、Issue に紐付けた。
作業は、この表を埋めていく形になった。 -
テストが先(1st〜2nd):E2E テスト(
TESTCASES.md)を足してから直す。修正の前後で、テストの結果が変わることを確かめる。 - 類似不良の水平展開(5th:#294・#331):1 件直したら、同じ型の不具合を全モジュールで探す。再現したものは直し、再現しなかったものは理由を残す。
-
品質の羅針盤(5th:#315・#335・#347):
QUALITY.mdをインストラクションにし、期待値(テストの検証)を弱める変更を、フックと CI で検出する。
名前空間の単位でレビューし、別モデルのサブエージェント(quality-reviewer)に独立してレビューさせる。
詳細は 品質の羅針盤 を参照。 -
Open 棟梁との往復(4th〜5th:#336・#337・#341・#345 ほか):MPAS で見つけた制約・汎用的な部品を、Open 棟梁側に戻す(OTR #634・#643・#654・#670・#675・#676 など)。
戻した部品に、MPAS 側が切り替える。MPAS がOpen 棟梁の部品の実地検証の場になっている。
- 読み取り:2017〜2021 年は仕様を足すことが開発の中心だったが、2026 年は足した仕様の品質を保証することが中心になっている。
これは、コアと枝葉 にある、リファレンス実装から**品質保証されたプロダクト(3.0)**を目指す方針と整合する。
汎用認証サイトは、プロダクト未満のリファレンス実装で、そこからプロダクトを目指している。
ただし、最初からリファレンス実装だったのではなく、一度、リファレンス実装に後退した経緯がある(作者の説明による)。
| 時期 | 位置づけ | 状況 |
|---|---|---|
| 初期(〜01-00 の頃) | 案件で使えるレベル | プレーンな ASP.NET Identity で、OIDC は未サポート。仕様が狭い(OAuth2 のみ)うちは、案件に投入した実績がある |
| 拡張期(01-10 〜 02-00) | リファレンス実装へ後退 | OIDC・FAPI・SAML2・CIBA・Device Flow と、仕様を足すほど、実装が複雑になった。品質保証が拡張に追いつかなくなった |
| 停止期(2022-04 〜 2025-11) | リファレンス実装 | 拡張も止まった |
| 再起動後(2025-12〜) | リファレンス実装 → プロダクトを目指す | 生成 AI(コーディング・エージェント)が後押ししている。3.0 で、品質保証されたプロダクトとしてのリリースを目指す |
-
後退の境目は、ASP.NET のパイプラインからの離脱(第 2 期の「転換点」)の頃である。
OIDC・STS を足すために、ASP.NET Identity(OWIN)の枠から外れ、自前の実装(CmnEndpoints)に切り替えた。
枠の中なら、フレームワークの品質に頼れた。枠の外では、仕様への適合と品質の責任が自分に移る。
その分の品質保証が、人 1 名の作業では追いつかなかった。 -
生成 AI が後押しする理由:品質保証が律速だったので、分析・修正・テスト・レビューを、エージェントに回せることが効く。
第 5 期の 3 か月(513 コミット)は、その試みである。通用するかは、まだ期待の段階で、このリポジトリ自体がその検証になっている。
ただし、検収は外部の基準(適合性テスト・CodeQL・別モデルのレビュー・品質の羅針盤)の結果で判断する。
エージェントが直したこと自体は、品質の根拠にならない。 -
まだ目標である:3.0 まではリファレンス実装として扱う。本番利用は想定せず、修正は行うが、アドバイザリーの発行は約束しない。
IdP / STS には、Keycloak などの既存のプロダクトという選択肢もある(コアと枝葉 の「汎用認証サイトの経緯」)。 - 読み取り:この変遷は、機能を足すより、品質保証が先に律速になることを示している。
足す速さが、保証する速さを超えたとき、プロダクトはリファレンス実装に戻る。
生成 AI は、足す側ではなく、保証する側の速さを上げるために使うと効く。
-
適合性テスト(Conformance Suite)で多数の不具合が見つかったことの振り返りと、関連する研究は、汎用認証サイトの振り返り を参照。
-
origin/developは 02-10 の候補である。未リリースで、確定ではない(詳細なリリース情報)。 -
残り(
ANALYSIS-IdP.md):D-14(適合性テスト:OpenID Foundation Conformance Suite を回す手順)、E-1(Minimal Hosting への移行)、E-8(AccountControllerからの STS 部分の切り出し)。 -
02-10 のリリース後に、mpos(汎用認証サイト)の再構築を始める予定(開始は指示待ち)。
- 汎用認証サイトのリリース情報
- 詳細なリリース情報(汎用認証サイト)
- 品質の羅針盤
- コアと枝葉
- MultiPurposeAuthSite リポジトリ:
root/programs/ANALYSIS-IdP.md、QUALITY.md、root/TESTING.md
Tags: 再構築
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。