服务端:OpenIddict + ASP.NET Core Identity
AuthorizationController 负责 authorize / 同意 / 换 token / 登出,AuthenticationController 负责外部提供方回调,AccountController 负责 React 页面的后端(登录提交、防伪令牌、外部登录落地),含 TempData 防环、prompt/max_age、同意分支矩阵。
它讲的是 yagang-identity 这个学习项目里登录这一条链路的代码:
demos/yagang-client-demo(React SPA,5173)
│ 授权码 + PKCE 授权请求
▼
backend/Yagang.Identity(OP + 资源服务器,7016,OpenIddict + ASP.NET Core Identity)
│ 未认证 → 跳登录页;首次授权 → 跳同意页
▼
frontend/yagang-identity-app(React,同源托管在 OP 的 wwwroot)读完 流程总览 你会得到一张完整时序图;读完 代码走读 你会知道每一段代码为什么这么写; 最后一页 坑速查 是踩过的坑与结论,可以直接当排错清单用。
阅读顺序建议