微软将改进.NET身份验证系统,消除对商用项目IdentityServer的依赖

微软在即将推出的.NET 8中,改进ASP.NET Core在身份验证、授权和身份管理函数库,使得商用项目IdentityServer不再是默认,同时也针对单页应用程序,提供权限身份验证功能,官方承诺,新的API将会让用户登录和身份管理的开发体验变得更简单。

现在要于ASP.NET Core应用程序中激活身份验证,开发者有3种选择,分别是使用内置的ASP.NET Core Identity解决方案、Azure AD和第三方以组件、容器和云计算服务形式提供的解决方案。

内置的ASP.NET Core Identity中的Identity Manager,可以提供处理用户、角色的API,而Identity Store则可用于存储持久身份资讯,ASP.NET Core Identity还与ASP.NET Core身份验证系统SignInManager集成,且提供可管理用户的UI。

但是当前单页应用程序在ASP.NET Core Identity使用上存在一些限制,自定义身份验证相关的页面,会强迫应用程序恢复成服务器端渲染页面,微软提到,他们正在研究新的解决方案,以支持没有外部依赖性的应用场景,供开发者能够选择开箱即用的解决方案,但同时又保有其他选项的自由。

微软将从.NET 8中的单页应用程序模板,移除对Duende IdentityServer的依赖。过去微软在.NET Core 3.1的Angular、React和Blazor WebAssembly模板,集成IdentityServer4以支持单页应用程序中的JSON Web Token(JWT)安全性,但在2020年的时候,IdentityServer开源项目维护者认为光靠赞助的收入,不足以支撑项目运行,因此宣布IdentityServer4 v4.x将是最后一个开源版本。

此后,IdentityServer维护者便成立公司Duende,并且将IdentityServer改为商业授权,不过微软在2021年发布的.NET 6仍继续内置IdentityServer,因为微软认为IdentityServer仍是当时ASP.NET Core创建自部署、本地端托管权限(Token)服务最成熟的选项。Duende IdentityServer模板具有双重授权,可免费用于开发、测试和学习,当组织年收入低于100万美元,也可以免费使用,但高于100万美元就需要支付使用费用。

不过,仍有许多用户不希望支付额外的费用,因此微软将在.NET 8中进行调整,让新端点无需依赖外部相依项目,就可在单页应用程序使用基于权限的身份验证。虽然微软会从单页应用程序模板中,移除对Duende IdentityServer的依赖性,但是开发人员仍可以继续选择使用Duende的解决方案,只是微软将不默认提供。

具体来说,ASP.NET Core 8在身份验证有两个改进方向,第一是扩展Cookie身份验证,进一步支持单页应用程序,改善从单页网页应用程序过渡到服务器渲染,所导致的不一致体验,过去用户要自定义体验,需要覆盖默认的服务器端渲染页面,而在.NET 8中官方将会添加API端点,使开发人员能够在自定义UI采用单页应用程序。

而顺应React、Angular和Blazor WebAssembly等单页应用程序框架的发展,以及开发者的要求,微软也计划扩展现有身份验证平台,改进.NET 8对权限身份验证系统的支持,官方表示,虽然现有以Cookie为基础的解决方法和功能依然可行,但是使用权限身份验证将更灵活,更适合单页应用程序的身份验证需求。

微软计划增加一个不需要第三方相依项目,或是授权的解决方案,与现有Cookie方法提供相同的功能,但将身份验证资料是封装在权限中而非Cookie,可在无法良好使用Cookie时,有额外的选择。