Repository navigation
OTR_MPASReleaseDetails
nishi_74322014 edited this page Nov 1, 2026
·
4 revisions
MultiPurposeAuthSite(汎用認証サイト、MPAS)リポジトリの Git のタグ間の差分を読んで作った、詳細なリリース情報。
利用者向けの要約は 汎用認証サイトのリリース情報 を参照。
- 対象:
C:\MultiPurposeAuthSiteのクローン。未リリース区間はorigin/develop(最終コミット 2026-10-23、PR #313 のマージ)を基準にする。
developに未マージの作業中ブランチ(5th_agent、2026-10-28)は、別の節に分けて書く(その後マージ済み。節の注を参照)。 -
パスは
root/programs/からの相対で書く。 - #番号は MultiPurposeAuthSite リポジトリの Issue(Open 棟梁の Issue は「OTR #」と書く)。
- 未リリース区間の A-1・C-7 などの記号は、リポジトリの
ANALYSIS-IdP.md(IdP / STS の適合性分析)の項目番号である。
| 区間 | 期間 | コミット(マージ除く) | 差分 |
|---|---|---|---|
| 01-00 → 01-10 | 2017-09-27 〜 2018-03-23 | 33 | 90 ファイル、+6,921 / −2,498 |
| 01-10 → 01-20 | 2018-03-23 〜 2018-09-28 | 20 | 122 ファイル、+3,613 / −3,856 |
| 01-20 → 01-80 | 2018-09-28 〜 2019-03-28 | 127 | 473 ファイル、+70,725 / −34,468 |
| 01-80 → 01-90 | 2019-03-28 〜 2019-09-27 | 60 | 153 ファイル、+8,903 / −4,541 |
| 01-90 → 01-95 | 2019-09-27 〜 2020-06-16 | 4 | 67 ファイル、+4,018 / −895 |
| 01-95 → 01-99 | 2020-06-16 〜 2021-03-29 | 26 | 64 ファイル、+3,415 / −853 |
| 01-99 → 02-00 | 2021-03-29 〜 2022-04-05 | 21 | 124 ファイル、+3,303 / −411 |
| 02-00 → develop | 2022-04-05 〜 2026-10-23 | 312(PR 18) | 706 ファイル、+268,899 / −36,503 |
| (参考)develop → 作業中ブランチ | 2026-10-23 〜 2026-10-28 | 56 | 02-00 からの累計で 744 ファイル、+278,774 / −44,264 |
-
JWT Bearer Token Flow:アサーションを作るツール(
CreateJwtBearerTokenFlowAssertion)と、ClientCredentialsFilter。 -
Token Revocation(
OAuth2RevocationProvider)。 -
OIDC:
OidcTokenEditor(Hybrid Flow の hash クレーム、HashClaimType)、OpenIDConnectModuleの作り直し。 -
FIDO2(
FIDO2Helper。ドラフト)。 - Cordova からの PKCE、汎用モバイル・バックエンドを見据えた変更。
- #5・#6・#9・#50・#52〜#54・#62〜#67・#75 ほか。
-
jwks_uriによる JWK Set の発行(CreateJwkSetJsonツール)。鍵 ID(kid)の変更への追随。 - 非同期処理サービスの部品を、同梱の Open 棟梁(
Frameworks/Infrastructure)から削除(AsynchronousProcessingService リポジトリへ)。 - 同梱の Open 棟梁に、ASP.NET Core 用のベースクラス(
MyBase*Core)を追加。 - #69〜#73・#79〜#83・#86・#90・#91、リリース作業(#85)。
ASP.NET Core 版の追加と、両系統の共通化の区間(#74・#89・#92・#95 ほか)。
| 区分 | 内容 |
|---|---|
| 追加 |
MultiPurposeAuthSiteCore/(ASP.NET Core MVC 版:AccountController・ManageController・OAuth2EndpointController・OAuth2ResourceServerController・Startup ほか) |
| 追加 |
CommonLibrary/(両系統が使う実装の実体):Data/(ユーザ・ロールのストア)、Extensions/(DataProvider・WebAuthnHelper)、Notifications/(Email・SMS)、TokenProviders/(AuthorizationCodeProvider・CmnAccessToken・CmnEndpoints・CmnIdToken)、ViewModels/
|
| 追加 | net48 版:Fido2ServerController・OAuth2EndpointController・OAuth2ResourceServerController
|
| 削除 | 同梱の Open 棟梁(Frameworks/Infrastructure。35 ファイル)を削除し、Open 棟梁のビルド成果物を参照する形に |
| 削除 | net48 版の旧 STS の実装(AccessTokenFormatJwt・ApplicationOAuthBearerTokenProvider・OpenIDConnectCodeFilter ほか)→ 既製フレームワークの実装から、スクラッチの実装へ
|
- Entity Framework の利用を取りやめ。Oracle(
Oracle.ManagedDataAccess.Core)のサポート。 - 外部ログインの確認(#102)、Open 棟梁側の変更(OTR #319・#322・#325・#326)への追随。
-
SAML2.0:
SamlProviders/CmnEndpoints、HomeSaml2OAuth2StartersViewModel(#77・#104・#111)。 -
FAPI Part 2:
RequestObjectProvider(JAR)、CmnResponseObject(JARM)、IssuedTokenProvider(#68 が 28 コミット)。 - WebAuthn のスクリプト(
Scripts/esm・umd)、CommandLineToolsの拡充。 - #107・#108・#116・#117・#122〜#124、プレリリース版の後始末(
-previewの削除)。
-
CIBA(
Extensions/CibaProvider)、FCM のプッシュ通知(Notifications/FcmService)、PPID(Util/PPIDExtension)。 - SQL Server での動作確認(net48・netcoreapp)。
-
Device Authorization Grant(
Extensions/DeviceAuthZProvider。#125 をCommonLibrary・net48 版・Core 版に)。 - 利用者ストアのコンテナ化、
nuget.exeの更新。 - #128・#132・#133・#135・#138・#141・#142・#144、Open 棟梁側の変更(OTR #362・#365・#367・#382)への追随。
-
CIBA の Authentication Device(
authentication_device/。Flutter の Android・iOS アプリ)。 - 開発環境でのテスト用コード。
- #139・#152〜#154・#156、OpenTouryoTemplates #108、Open 棟梁側の変更(OTR #398・#410)への追随。
未リリース。 次版(02-10)に入る予定の変更で、確定ではない。
3 年余りの停止の後、再起動(Reboot)→ エージェントによる分析 → 段階的な修正の順で進めた。
| 段 | 期間 | 主な Issue | 内容 |
|---|---|---|---|
| Reboot 1〜3 | 2025-12-19 〜 2026-03-30 | #179・#180 | Open 棟梁 03-20 の参照(3_BuildLibsAtOtherRepos.bat の branchName)、net6.0 → net10.0、パッケージの更新 |
| 1st_agent | 2026-09-07 〜 09-17 | #182〜#216 | 文書(AGENTS.md・ANALYSIS*.md)、適合性の分析(ANALYSIS-IdP.md)、応答形式・異常系の修正、E2E テスト |
| 2nd_agent | 09-17 〜 10-02 | #129・#140・#151・#188・#205・#218〜#258 | セキュリティ(有効期限・PKCE・クライアント認証)、PAR、ログアウト、ID 連携、署名アルゴリズム |
| 3rd_agent | 10-02 〜 10-08 | #137・#260〜#284 |
redirect_uri・CORS・response_type・同意の永続化、WebAuthn の作り直し |
| 4th_agent | 10-08 〜 10-23 | #277・#286〜#311 | ID 連携の n 件化、DCR、DPoP、ログアウトの拡充、レート制限 |
| 項目 | Issue | 内容 |
|---|---|---|
| A-1 | #182 |
expires_in が常に 0(.Seconds → .TotalSeconds) |
| A-3・A-4 | #184・#201 | JWT の exp / nbf / iat、email_verified / phone_number_verified が文字列だった(JARM を含む) |
| A-5 | #186・#197 | OIDC のとき redirect_uri が code に紐付かない(条件が反転していた) |
| A-6・A-8 | #187 | 認可エンドポイントのエラー応答が独自形式で、コードが全て server_error だった |
| A-7 | #196 | エラーの HTTP ステータスが 200 だった |
| A-8-2 | #218 | トークン応答にキャッシュ制御のヘッダが無かった |
| A-9・A-10 | #189・#228 | discovery のキー名の末尾スペース、その他の不整合と未広告 |
| A-11 | #200 |
/revoke /introspect がヒントを必須にし、無効なトークンをエラーにしていた(RFC 7009 / 7662) |
| A-12 | #247・#254 |
max_age を超えたとき・未サインインで prompt=none のときの応答(login_required) |
| A-13 | #245 |
refresh_token で更新すると、登録種別のクレーム(fapi)が消えた |
| A-14 | #140 |
pairwise のクライアントに sub 以外を返せていなかった |
| (A-2) | #183 |
誤検出(nonce が無いと id_token が発行されない、という指摘は誤り。見誤った理由を記録として残している) |
-
kidの無い JWT、/tokenの異常系、使用済み・不正なcode/device_code、他クライアントのrefresh_token、存在しないrequest_uri、JWT でない値(#185・#199・#241)。
| 項目 | Issue | 内容 |
|---|---|---|
| C-1 | #193 |
/device_authz にクライアント認証が無かった |
| C-2 | #194 |
/revoke /introspect がトークンの所有者を確認しなかった |
| C-3 | #272 |
prompt=none が同意画面を無条件にスキップしていた |
| C-4・C-5・C-11 | #188・#229 | 認可コード・refresh_token・Request Object に有効期限が無かった(ワンタイム化・再利用検知も追加) |
| C-6 | #187 |
state を URL エンコードせずに連結していた |
| C-7 | #220・#221・#224 | PKCE の扱いが OAuth 2.1 と噛み合わない(plain、code_challenge の必須化、クライアント単位の必須化) |
| C-8 | #129 | トークンの alg ヘッダで検証器を選んでいた |
| C-9 | #265 | CORS が全エンドポイントで AllowAnyOrigin だった |
| C-10 | #263 |
redirect_uri の比較が大文字小文字を無視していた。テスト用の抜け道の削除 |
| C-12・C-13 | #223・#251 | Cookie 認証の有効期限が 2 分にハードコード、DataProtection の鍵が永続化されていなかった |
| C-14・C-16 | #190・#191 |
nonce が implicit / hybrid で必須でなかった、送られていない nonce を state から捏造していた |
| C-15 | #267 |
response_type の照合が文字列の完全一致だった(順不同の集合に) |
| C-17 | #198 | 要求したスコープがそのまま発行されていた |
| C-18 | #224 | Device AuthZ グラントが登録種別を判定していなかった |
| C-19 | — | mTLS のトークンの紐付け(cnf)が形式違いで、照合もしていなかった(RFC 8705 形式にし、/userinfo で照合) |
| C-20・C-21 | #238・#237 |
private_key_jwt が仕様と違う名前でしか通らなかった、Basic の資格情報を復号せずに照合していた |
| C-22 | #245 |
code_challenge を送った認可コードが、code_verifier 無しで交換できた |
| C-25 | #305 | mTLS で、登録が空のときに空の Subject DN が一致していた |
| 項目 | Issue | 内容 |
|---|---|---|
| D-1・D-1-2 | #232・#310 | RP-Initiated Logout(/end_session)、sid(RP ごとに別の値)、Back-Channel Logout(logout_token)、Front-Channel Logout(iframe)。Session Management は見送り |
| D-2 | #229 |
PAR(/par)。/ros は RFC 9101 §5.2.1 の任意機能として残す |
| D-3 | #311 |
DPoP(/token で証明を受け、cnf.jkt で発行。7 つのグラント全部) |
| D-4 | #307・#308・#309 |
Dynamic Client Registration(登録・管理・クライアント認証の方法、software_statement の発行者の台帳、jwks_uri) |
| D-5 | #231・#252 | 認可応答の iss(RFC 9207) |
| D-6 | #272 | 同意の永続化(ConsentGrant 表。DDL 3 方言) |
| D-7 | #230 |
profile / address スコープのクレーム(設定 UserClaimsMapping で対応付け) |
| D-8 | #306 | クライアントあたり複数の redirect_uri(空白区切り) |
| D-9・D-9-2 | #129・#151 | 署名鍵のローテーション(SigningKeys の表)、PPID の秘密のローテーション(sub の対応表) |
| D-10 | #302 | access_token の typ: at+jwt(OTR #611 の追随)、jku を出さない |
| D-12 | #220 | OAuth 2.1 への整合(雛形の Implicit / ROPC を無効に) |
| D-13 | #305 | レート制限 / ブルートフォース対策(slow_down など) |
| D-15 | #292 | ID 連携の上流を n 件に(設定 IdFederationUpstreams + 利用者ストア、管理画面 /IdFederationAdmin) |
| — | #129 | 署名アルゴリズム:RS384 / RS512、ES384 / ES512、PS256 / PS384 / PS512 を登録で選べる。検証する側の alg もクライアント単位(#262) |
| — | #140・#286・#289・#291 | ID 連携:認可コード + PKCE(S256) + client_secret_post、(iss, sub) で連携、iss・aud の照合、SAML2 での委譲、上流の discovery・メタデータから鍵を引く |
| — | #213・#216 | 2FA のプッシュ承認(MobileApp。net10.0 / net48) |
| — | #137 |
WebAuthn の作り直し(net10.0 は FIDOServerMode。net48 は削除。Users.FIDO2PublicKey → FIDO2Data 表) |
| 項目 | Issue | 内容 |
|---|---|---|
| E-2 | #256 | セッションの置き場を選べるように(SessionStoreType:mem / sql / redis) |
| E-3 | #265 | CORS の 3 重定義の整理 |
| E-4 | #304 | ファイルの文字コード(UTF-8 + BOM) |
| E-5 | — | log4net 3.2.0 → 3.3.0 |
| E-7 | #303 | JWK Set の配信(ファイルの変更を検知、ETag・304) |
| E-9〜E-12 | #140 | ID 連携の /token の宛先の書き換え、code_verifier の空文字、iss を見ていない、独自スコープの要求 |
| — | #277 | ブラウザでしか測れないもの(描画・JavaScript)のテスト(Tests/WebUI)など、段階 1〜7 |
| — | — | 管理画面のトークン取得処理、オンライン決済サービス(支払い情報)の削除 |
-
残り:D-14(適合性テスト:OpenID Foundation Conformance Suite を回す手順)、E-1(Minimal Hosting への移行)、E-8(
AccountControllerからの STS 部分の切り出し)。
| 区分 | 内容 |
|---|---|
| 追加 |
Tests/E2ETests(126 ファイル)・Tests/MtlsTestHook、test.ps1・TESTCASES.md
|
| 追加 |
CommonLibrary/Co/(設定と定数。3 ファイル) |
| 追加 |
CommonLibrary/Extensions/(PAR・DPoP・DCR・ログアウト・ID 連携などの Provider。28 ファイル) |
| 追加 |
CommonLibrary/TokenProviders/:ClientModePolicy・CmnDPoP・CmnLogoutToken・SigningKeys
|
| 追加 |
CommonLibrary/SamlProviders/:CmnSaml2Response・CmnSamlAttributes・CmnSamlMetadata・IdFederationSaml2Metadata・IdFederationSaml2Request
|
| 追加 |
CommonLibrary/Data/EnumSessionStoreType、CommonLibrary/Manager/MobileAppTokenProvider
|
| 削除 |
CommonLibrary/Extensions/FIDO/MsPassHelper・FIDO/DataProvider(FIDO 系の作り直し)、ViewModels/ManageAddPaymentInformationViewModel、net48 版の Fido2ServerController
|
- 汎用的な部品の一部は、Open 棟梁へ移した(OTR #634。
DPoPProof・RemoteJwkSetStore・SAML2Metadataなど)。
汎用認証サイト側で移した後の部品に切り替える作業(「OTR移行後取込」)は、作業中ブランチにある。
| 変更 | 影響 |
|---|---|
subject_types の既定 public、uname の廃止(#151) |
sub の値が変わりうる。対応表(SubjectIdentifier)で引き継ぐ |
redirect_uri の厳密比較(#263) |
大文字小文字の違う登録値では通らない |
| PKCE・Implicit / ROPC の既定(#220) | 雛形のままでは Implicit / ROPC が使えない(設定で戻せる) |
| 有効期限の検証(#188・#229) | 期限切れの code・refresh_token・Request Object が拒否される |
DDL の追加・変更(ConsentGrant・SubjectIdentifier・FIDO2Data ほか) |
既存の DB にスキーマの移行が要る(CompareDdl.ps1 で突き合わせ) |
| WebAuthn(#137) | net48 版では使えない。net10.0 版は登録をやり直す |
注(2026-11-01):この節の変更は、その後
developにマージされた(PR #319・#326。d72c6a0f)。未リリースであることは変わらない。本文への統合は、まだ行っていない。この節は 2026-10-28 時点の記録である。
develop にもまだ入っていない。 5th_agent ブランチ(2026-10-23 〜 10-28、56 コミット。#294 が 55、#314 が 1)の内容で、
レビュー・マージの前なので、変わりうる。
| Issue | 内容 |
|---|---|
| #294(C-26) |
独自 scope userid を廃止:pairwise のクライアントにも、共通の利用者 ID を渡していた。自己テスト用の StandardScopes は SelfTestScopes に改名 |
| #294(C-27) |
独自 scope auth は、登録に明記したクライアントだけ有効:以前は、要求に auth を付けるだけで、どのクライアントも同意画面を飛ばせた(OIDC Core §3.1.2.4・§3.1.2.6) |
| #294 |
設定の再編:設定を CommonLibrary/Co/ の Config.*(Account・Deployment・ExternalLogin・IdFederation・Notification・Sts・Sts.Endpoints・Sts.Features・Sts.Protection)に分割。定数の整理、リテラルの定数化・リソース化(Resources/Diagnostics) |
| #294 | クライアントの登録種別の項目名を oauth2_oidc_mode → client_mode に改名 |
| #294 |
AccountController を partial class に分割(Authorize・ExternalLogin・Helper・IdFederation・Saml2・SelfTest・SignIn・SignUp・TwoFactor。net10.0 版と net48 版で同期)。DCR の Provider を 4 分割。DataProvider → Saml2OAuth2DataProvider
|
| #294 | DCR の修正:更新で所有者が消える、クライアントの削除で同意が残る、管理画面で EC の公開鍵が持ち越されない |
| #294 | エラー応答を OPERATION ログに記録、外部ログインの失敗の理由を記録。Core 版の利用者名の文字の制限を AllowOnlyAlphanumericUserNames に合わせた |
| #294 |
Open 棟梁へ移した部品への切り替え(「OTR移行後取込」):JwkSetDocument・DiscoveryJwks・CmnSamlAttributes を削除し、Open 棟梁(OTR #634)の部品を使う。Util/IdP/UserIdentifier を追加 |
| #294 | 設計の経緯を DesignNotes/(AccountController.md・ClientRegistrationProvider.md)に移し、ソースのヘッダの更新履歴を圧縮 |
| #314 |
EnableImplicitGrantType が false のとき、access_token をフロント・チャネルで返す Hybrid / OIDC の Implicit(code token・code id_token token・id_token token)も断り、discovery で広告しない(code id_token は通る)。設定キー EnableOpenIDConnect を削除。テストに -NoImplicit を追加 |
後方互換性に影響する変更(マージされた場合)
| 変更 | 影響 |
|---|---|
独自 scope userid の廃止(C-26) |
要求すると invalid_scope になりうる |
独自 scope auth の登録要(C-27) |
同意画面を飛ばしていたクライアントは、登録に auth を明記する必要がある |
登録種別の項目名 client_mode
|
設定・DB の項目名の書き換えが要る |
設定の再編、EnableOpenIDConnect の削除(#314) |
設定ファイルの移行が要る |
| Implicit を閉じた配備での Hybrid の拒否(#314) |
code token などを使う RP は、EnableImplicitGrantType を true にするか、フローを変える |
| Open 棟梁の部品の利用 | Open 棟梁の 03-30(OTR #634 を含む版)が必要 |
- 汎用認証サイトのリリース情報
- 詳細なリリース情報(03-00〜)(Open 棟梁側の対応する変更)
- MultiPurposeAuthSite リポジトリ:
root/programs/ANALYSIS-IdP.md、root/CONFIGURATION.md、root/TESTING.md - Compare 02-00...develop · OpenTouryoProject/MultiPurposeAuthSite
Tags: 再構築
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。