ASP.NET Core 8 中身份验证的改进

news2024/11/19 3:40:14

ASP.NET Core 团队正在改进 .NET 8 中的身份验证、授权和身份管理(统称为“身份验证”)。新的 APIs 将使自定义用户登录和身份管理体验变得更加容易。新的端点将在没有外部依赖的单页应用程序(SPA)中启用基于令牌的身份验证和授权。我们还将改进我们的指引和文档,使发现和实施身份管理解决方案更加容易。

背景

在 ASP.NET Core 应用程序中启用身份验证的开发人员面临着多种选择:

  • ASP.NET Core 提供了内置的 ASP.NET Core Identity 解决方案来管理用户登录和授权。

  • Azure Active directory (Azure AD) 是 Azure 云托管的解决方案,提供细粒度访问控制,并支持高级场景,如“由应用程序代表用户”为 APIs 授权资源。

  • 以包、容器和云服务的形式提供各种第三方解决方案。

ASP.NET Core Identity 是我们独立的开箱即用的解决方案。它包括:

  • Identity Manager 提供用于处理用户(包括声明和登录)和角色的 APIs。

  • Identity Store 接口用于持久化标识信息(用户、声明、登录提供者和角色)。

  • 关系数据库身份存储的默认实现。您可以选择创建自己的身份存储的自定义实现。

  • 身份验证系统(SignInManager)。

  • 用户管理界面(Identity UI)。

目前,在 SPA 应用程序中使用 ASP.NET Core Identity 存在一些限制。传统的自定义身份相关页面的方式会迫使你的应用程序回归到服务器渲染的网页。我们依靠外部(第三方)包来支持基于令牌的身份验证。

我们已经听到了您的反馈,并正在研究一种解决方案,以支持更多的没有外部依赖项的即用场景。这使你可以灵活地马上开始使用一个解决方案,同时保持选择其他选项的自由。我们最近在 GitHub 上分享了我们的身份验证计划,得到了很多正面反馈,感谢有机会与这样一个支持我们的社区合作。

IdentityServer 和 SPA 模板

为了处理客户反馈,提供更多的选项并尽可能地简化,我们计划从 .NET 8 中的 SPA 模板中移除对 Duende 的 IdentityServer 的依赖。

作为背景,我们开始发布 IdentityServer4 以支持单页应用程序(SPA)中的 JSON Web Token(JWT)安全性,作为.NET Core 3.1 中 Angular、React 和 Blazor WebAssembly 模板的一部分。该项目当时是开源的。2020年,IdentityServer 项目维护者创建了 Duende,以支持他们努力发展 IdentityServer 并将其更改为商业许可。出于多种原因,我们选择在我们的模板中继续提供 IdentityServer,并在我们的模板中明确了许可要求。

对于自托管符合标准的 Open ID Connect 和 OAuth 2.0 解决方案来说,IdentityServer 仍然是一个绝佳的选择。Duende 提供了他们自己的模板与 ASP.NET Core Identity 集成。除了 IdentityServer (如果您符合社区版的条件,它仍然是免费的)之外,还有许多其他自托管选项可用,包括开源的 OpenIddict 项目和基于容器的 Keycloak。

我们相信这一改变将为您的应用程序选择正确的身份管理解决方案提供更多自由。

为了让您能更轻松地发现可用选项并从中进行选择,我们的模板将链接到一个文档页面,以阐明您的选择。该文档将列出并链接到模板、教程或示例,使您能够添加身份验证,无论是通过我们自己的服务(例如 Azure AD)还是第三方产品(例如 Duende 的 IdentityServer)。

改进自托管解决方案的身份验证

许多用户不希望或不需要维护 OAuth/OpenID Connect 服务器的复杂性和开销。您的应用程序只需要能够通过登录验证用户身份并根据权限安全访问资源。自发布以来,ASP.NET Core 身份平台就内置了对基于角色的访问和简单身份管理的支持。当您在我们的模板中选择“个人帐户”选项进行身份验证或在命令行上使用 dotnet new 的 --auth 选项时,将启用自托管身份管理。您还可以在没有身份的现有项目中搭建身份脚手架。Visual Studio 将构建所需代码以生成和维护用户数据库并通过角色管理登录和权限。ASP.NET Core Identity 提供了一种开箱即用的基于 cookie 的身份验证体验。

我们听取了您的反馈,并确定了 ASP.NET Core 8 中需要改进的两个方面:

▌扩展现有的基于 cookie 的身份验证,以支持 SPA 应用程序中的自定义

基于 cookie 的身份验证适用于较小的单域解决方案。要自定义体验,您必须覆盖我们用于呈现身份管理 UI 的默认服务器呈现的身份页面。当客户从单页 web 应用程序体验过渡到服务器呈现的体验时,这会导致不一致的体验。该团队将添加 API 端点,使开发人员能够在自定义 UI 中使用单页应用程序体验。

▌使现有身份现代化以支持基于令牌的身份验证

React、Angular 和 Blazor WebAssembly 等 SPA 应用程序框架的应用和功能不断增长。尽管我们现有的基于 cookie 的解决方案有效,但行业已经发展了,如今基于令牌的身份验证解决方案更加灵活,而这正是支持身份验证的 SPA 应用程序所需要的。我们有许多用户需要一个不需要第三方依赖项或许可的简单解决方案。我们计划扩展现有的身份平台以启用基于令牌的身份验证。这将主要反映现有基于 cookie 的解决方案的能力和功能,并将身份验证数据封装在令牌而不是 cookie 中,并使其能够在 cookie 不是最佳或不合适的情况下工作。

值得注意的是,SPA 相关的增强针对的是在单个域上运行的解决方案,并且不需要对云资源或第三方 APIs 进行身份验证。对于有这些需求的应用程序,Azure AD、IdentityServer 或其他第三方解决方案是首选。

更容易探索和学习

我们现有的文档涵盖了像 ASP.NET Core Identity、Microsoft Identity 平台和 Azure AD 等功能。大多数的现有文档侧重于产品、技术和功能。.NET 8 的目标是让您有一个单一的起点来学习 .NET Auth 文档的可用选项,它整合了支持教程和示例的链接,更重要的是提供了具体的指导。例如,与具有数据库后端、第三方安全 API 依赖项和社交登录的业务应用程序相比,没有外部依赖项的独立 SPA 应用程序具有不同的需求。我们将与客户合作,确定常见的场景,如“保护现有 API 端点”,并提供涵盖这些需求的端到端文档。

与此同时,Microsoft Entra 正在与 .NET 团队进行密切合作,不仅提供了更好的文档和示例,而且还改进了客户端、SDKs 和工具,以减少将 Azure AD 成功添加到应用程序所需的步骤、代码、配置和概念。

下一步

我们正在改变的过程中。在此期间,欢迎您提供反馈和意见,以帮助为每个人提供更好的身份验证。您可以通过在 GitHub 提交 issue 来描述您的问题,或对现有问题进行投票来帮助我们优先考虑影响最大的问题。也欢迎针对我们的 ASP.NET Core 文档提出问题和拉取请求。

点我前往 GitHub 身份验证计划~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/502749.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构绪论

数据结构绪论 1.数据结构 数据结构 数据结构是相互之间存在一种或多种特定关系的数据元素的集合。数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及他们之间的关系和操作等相关问题的学科。 数据 数据:是描述客观事物的符号,是计算机中可以…

Dtop环球嘉年华全球Web3.0分布式私域电商生态发展峰会圆满举办

5月7日,Dtop环球嘉年华全球Web3.0分布式跨境私域电商生态发展峰会暨战略合作备忘录签署仪式在马来西亚首都吉隆坡隆重举办。此次峰会汇集了Dtop环球嘉年华韩国、新加坡、澳洲、泰国、印尼等国家的社区联合发起人,环球自治商学院地区代表及来自Dtop环球嘉年华不同国家的粉丝用户…

nas各种共享访问协议的使用(smb,nfs,ftp,ftps,sftp,afp,webdav)

使用群晖、UNRAID、FREENAS等NAS系统的小伙伴肯定会有传输文件的需求,无论是在本地局域网还是远端设备,这种情况下当然可以使用群晖的WEB管理界面中File Station,但是这种方式便捷性不够,于是nas与本地设备文件的传输最好的方式是…

lua | table表的使用操作

目录 lua table表 表的构造 Table的使用 table.concat() table.insert()与table.remove() table.sort() table.maxn() 本文章为笔者学习分享 学习网站:Lua 基本语法 | 菜鸟教程 lua table表 table:是lua的一种数据结构,用来帮助我们…

为什么Windows 10电脑运行缓慢?如何解决?

​虽然电脑是大家生活中的常用工具,但它经常会出现一些烦人的小问题,比如Windows 10系统在长时间使用后运行会变的缓慢。这时你必须等待一会才能打开/关闭电脑、打开和访问文件夹或软件,那要如何优化Windows 10电脑来解决运行缓慢的问题呢&am…

如何在 Espressif-IDE 中使用 Wokwi 模拟器

乐鑫近期已发布 Espressif-IDE v2.9.0,您可直接在此版本的 IDE 中使用 Wokwi 模拟器。 什么是 Wokwi 模拟器? Wokwi 是一款在线电子模拟器,支持模拟各种开发板、元器件和传感器,例如乐鑫产品 ESP32。 Wokwi 提供基于浏览器的界面…

C++学习day--08 数组和字符串

1、什么是数组 数组,就是多个元素的有序“组合”。 C 和 C语言中的数组: 1 )由多个大小相同的小柜子组成 > 相同大小的内存块组成,即相同类型的数据 2 )这些小柜子,有自己对应的编号 > 编号从 …

软考中级工程师笔记(持续更新)

进制 正负0 -0原000110010000 1000反000111100000 1111补000111110000 0000 取值范围 原 -(2n-1)-1~(2n-1)-1 数量 [(2n-1)-1]-[-(2n-1)-1] 1(1代表0)(2*2n-1)-1**2n-1** 反 -(2n-1)-1~(2n-1)-1 数量 [(2n-1)-1]-[-(2n-1)-1] 1(1代表0)(2*2n-1)-1**2n-1** 补 -(2n-1)~(2n-…

算法设计 || 实验一 用分治法实现元素的归并与检索 (头歌详解+本题分析笔记)

目录 (一)递归与分治是个啥? 1.递归(归并排序) 2.分治(二分检索算法) (二)头歌代码怎么写? (三)代码部分详解: &…

Android内嵌Unity (Activity)

Unity2019.4.4 AndropidStudio4.2.1 参考文档: Android内嵌Unity并实现互相跳转的实例代码_Android_脚本之家 Android Fragment中加载,嵌套Unity视图_unity 导入并作为fragment_周灬浩的博客-CSDN博客 本文只实现了Activity整个切换过去,而Fragment…

WSL2 ubuntu ip 自动同步 、静态ip(解决wsl2 ip 每次开机ip会变化的问题)

​ 利用python脚本解决wsl2 ip不固定的问题 环境信息 ​ wsl2 中linux版本:ubuntu ​ windows版本: win10/win11 问题描述 最近装了wsl2,使用vscode远程连接wsl2时遇到了如下问题: 1、wsl2的ip无法固定 2、wsl2的ssh服务不能…

vue项目使用element-ui

最近新建一个vue项目,配置了element-ui,较之前使用时发生了些许变化,对新的配置方式进行记录 node版本 v14.21.3 npm版本 v6.14.18 vue版本 v2.6.14 element-ui版本 v2.15.13 创建项目vue项目,使用…

设计原则之【迪米特法则】

文章目录 一、什么是迪米特法则1、理解迪米特法则2、如何理解“高内聚、松耦合”? 二、实例1、实例12、实例2 一、什么是迪米特法则 迪米特原则(Law of Demeter LoD)是指一个对象应该对其他对象保持最少的了解,又叫最少知道原则&…

Navicat自动提交的开和关

使用Navicat时,若是自动提交是打开状态,就相当于是自动执行了commit操作,就无法进行回滚操作。 一.相关指令 1.查询Navicat的自动提交开关状态: -- 查询自动提交 ON:是自动提交,即commit ;OFF:不是自动提交&#xf…

Java-注解

文章目录 前言一、概述二、元注解TargetRetentionDocumentedInherited 三、自定义注解四、常用内置注解OverrideDeprecatedSuppressWarnings 前言 注解用于修饰包、类、方法、属性、构造器、局部变量等数据信息,它可以用于创建文档,跟踪代码的依赖性&am…

怎么在VMware ESXi添加NAS存储?

案例:需要将NAS添加到VMware ESXi “我的本地空间不是很多,虚拟机占了我很多空间,但是我有一个NAS,所以我想问一下有没有办法可以让VMware ESXi添加NAS存储来扩展空间?” 网络附加存储(NAS)设…

2023年6月CDGP数据治理专家认证考试,5月报名及学习

目前6月DAMA-CDGP数据治理专家认证考试开放报名地区有:北京、上海、广州、深圳、长沙、呼和浩特。 目前南京、济南、西安、杭州等地区还在接近开考人数中,打算参加6月考试的朋友们可以抓紧时间报名啦!!! DAMA认证为数据…

为什么每个有影响力的内容创作者都需要一个Kadence WordPress网站

创作者经济正在蓬勃发展,内容创作者正在以前所未有的方式建立受众和收入来源。无论您是在 YouTube、Instagram、TikTok 还是任何其他平台上增加受众,充分利用这些受众变得越来越重要。 Adobe 于 2022 年 8 月发布的一项研究表明,过去 2 年全…

关于加强珠宝玉石类小程序把控的公告

各位小程序开发者为进一步加强小程序的规范管理,保障用户合法权益,平台将对珠宝玉石类小程序加强把控,具体内容如下: 一、 【商家自营-珠宝玉石】类目资质调整 备注:若小程序涉及经营随形加工的原石或摆件相关服务&…

Vue入门简介【第一篇】

大纲 一、Vue介绍 🌴 1.1 什么是Vue vue是一个构建用户界面UI的渐进式javascript框架,渐进式的框架是指可以一步一步的由浅入深的去使用该框架。 vue官网: https://cn.vuejs.org/ 🌴 1.2 Vue的优点 ⭐️ 1、体积小 压缩后33…