这篇文章将为大家详细讲解有关使用ASP.NET Core实现身份认证功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
创新互联是专业的儋州网站建设公司,儋州接单;提供做网站、成都做网站,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行儋州网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!1. 万变不离其宗
显而易见,一个常规的身份认证用例包括两部分:
① 对用户进行身份验证
② 在未经身份验证的用户试图访问受限资源时作出反应
已注册的身份验证处理程序及其配置选项被称为“方案”,方案可用作一种机制,供用户参考相关处理程序的身份验证、挑战和禁止行为。
我们口头上常说的:
基于cookie认证方案,若认证成功,go on,若认证失败则跳转回登录页面;
基于基本身份认证(BA)方案,若认证成功,go on,若认证失败则给浏览器返回WWW-Authenticate标头, 浏览器会再次弹出认证窗口。
2. ASP.NET Core认证原理
在 ASP.NET Core 中,身份验证由IAuthenticationService负责,身份验证服务会调用已注册的身份验证处理程序来完成与身份验证相关的操作, 整个验证过程由认证中间件来串联。
其中有几个关键步骤
1、认证处理程序
可结合方案Scheme中的配置项AuthenticationSchemeOptions编写认证处理程序。
基于Cookie的认证方案可在Options项中可指定登录地址,
基于基本身份的认证方案可在Options项中指定用户名/密码;
2、身份认证程序继承自AuthenticationHandler类或IAuthenticationHandler接口。
核心认证函数可落地基于声明的访问控制,生成绑定了ClaimsPrincipal、Scheme的AuthenticationTicket对象; 无论认证成功/失败,函数返回AuthenticateResult对象。
挑战(对未认证的用户做出的反应): 例如返回登录页面
禁止(对已认证,但对特定资源无权访问做出的反应) : 例如返回提示字符串
以上均为服务注册过程
收到请求,认证中间件使用IAuthenticationService对HttpContext按照要求的scheme进行认证, 实际内部会调用第2步编写的认证处理程序。
以上认证原理,之前有一个近身实战: ASP.NET Core 实现基本身份验证。
源代码如下:/tupian/20230522/ppspanstrong3 ASP.NET Core获取当前用户
基于声明的访问控制, 我们会在HttpContext.User属性存储身份信息。
var claims = new[] { new Claim(ClaimTypes.NameIdentifier,username), new Claim(ClaimTypes.Name,username), }; var identity = new ClaimsIdentity(claims, Scheme.Name); var principal = new ClaimsPrincipal(identity); Context.User = principal;