微软在即将推出的.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时,有额外的选择。