基于ASP.NET Identity Core与Web API Core 2.0的认证方案选型困惑
完全理解你的顾虑——Identity Server 4确实功能强大,但在多应用角色/声明管理上的上手成本和配置复杂度,很容易让你在认证模块上消耗过多精力,导致核心网站功能延期。放弃SSO转而聚焦ASP.NET Identity本身,其实是非常务实的选择,尤其是在项目时间紧张的情况下。
下面给你几个可落地的建议:
先搭好ASP.NET Identity的基础认证框架
优先把单应用的认证、角色、声明功能跑通:基于IdentityUser和IdentityRole的基础结构,结合EF Core存储用户、角色及关联声明。如果要区分多应用的权限范围,可以在用户表或角色表中新增ApplicationId字段,用来标记权限所属的应用。比如给用户分配ApplicationId = "ShopApp"的角色,后续在ShopApp中验证权限时,只加载对应这个标识的角色和声明即可。用轻量方案临时解决多应用数据共享
如果你需要跨应用共享部分用户数据,不用急着上SSO,可以先做简单的用户同步机制:比如每个应用的数据库独立维护用户基础信息(账号、密码哈希),通过后台定时任务同步核心数据,或者在用户首次登录其他应用时自动创建账号并同步权限。这种方式虽然不够优雅,但开发成本低,能快速满足当前需求。为后续升级SSO预留空间
现在开发时尽量把认证逻辑封装成独立的服务层,比如抽象出IAuthService接口,统一实现登录、权限验证等核心方法。这样后续如果项目时间充裕,想切换回Identity Server 4或其他SSO方案,只需要替换服务实现,不用大面积修改业务代码,降低重构成本。避免过度设计,先满足核心需求
不要一开始就追求完美的多应用权限体系,先聚焦当前网站的核心认证需求:用户登录、角色控制、基础声明验证。等核心功能上线后,再根据实际业务反馈迭代优化权限管理模块,这比卡在复杂的SSO配置上耽误上线时间要高效得多。
内容的提问来源于stack exchange,提问作者chobo2

