ASP.NET Identity除了提供基于Cookie的身份验证外,还提供了一些高级功能,如多次输入错误账户信息后会锁定用户禁止登录.集成第三方验证.账户的二次验证等,并且ASP.NET MVC的默认模板中就带有这些功能. 本文将从以下几个方面解释ASP.NET Identity是如何实现身份验证机制的: ● ASP.NET Identity的“多重”身份验证 ● Owin身份验证的积极模式与消极模式 ● 再谈Owin身份验证机制 ● 基于Owin的Identity在ASP.NET中身份验证的…
上篇文章介绍了ASP.NET中身份验证的机制与流程,本文将使用代码的来介绍如何实现第三方账户验证与双因子验证. 本章主要内容有: ● 实现基于微软账户的第三方身份验证 ● 实现双因子身份验证 ● 验证码机制 实现基于微软账户的第三方身份验证 在微软提供的ASP.NET MVC模板代码中,默认添加了微软.Google.twitter以及Facebook的账户登录代码(虽然被注释了),另外针对国内的一些社交账户提供了相应的组件,所有组件都可以通过Nuget包管理器安装: 从上图中看到有优酷.微信.Q…
随着软件的不断发展,出现了更多的身份验证使用场景,除了典型的服务器与客户端之间的身份验证外还有,如服务与服务之间的(如微服务架构).服务器与多种客户端的(如PC.移动.Web等),甚至还有需要以服务的形式开放给第三方的,身份验证这一功能已经演化为一个服务,很多大型应用中都有自己的身份验证服务器甚至集群,所以普通的身份验证方式已经不能满足需求. 在.Net领域中也有一些开源的身份验证服务器组件,如IdentityServer(http://identityserver.io/),但是这些组件对于一…
前面的文章中为My Blog加入了文章的管理功能(ASP.NET没有魔法——ASP.NET MVC使用Area开发一个管理模块),但是管理功能应该只能由“作者”来访问,那么要如何控制用户的访问权限?也就是当用户访问管理功能时需要对用户进行身份验证,对于用户来说身份验证也就是登录,即提供一个登录界面,通过账号密码的形式登录后就可以访问受限制的内容. 本文将从以下几个方面介绍ASP.NET MVC是如何实现用户身份验证的: ● Web中的身份验证 ● ASP.NET的Identity组件介绍 ● A…
前面文章介绍了如何使用Identity在ASP.NET MVC中实现用户的注册.登录以及身份验证.这些功能都是与用户信息安全相关的功能,数据安全的重要性永远放在第一位.那么对于注册和登录功能来说要把密码及用户其它信息通过表单的形式安全的提交到服务器上,那么最适合的方法就是使用HTTPS(如果有条件或者有安全需求,应该所有请求都基于HTTPS,本章不涉及HTTPS的介绍),而在注册时用户的密码应该加密后保存在数据库中,包括登录时对用户名的验证也是对密码明文加密后再进行匹配,对于身份验证来说,服务器…
上一篇文章介绍了使用Authorize特性实现了ASP.NET MVC中针对Controller或者Action的授权功能,实际上这个特性是MVC功能的一部分,被称为过滤器(Filter),它是一种面向切面编程(AOP)的实现,本章将从以下几个方面来介绍ASP.NET MVC中的过滤器. ● ASP.NET MVC 中的过滤器及其类型 ● ASP.NET MVC 中常用的过滤器 ● ASP.NET MVC 过滤器的应用方法 ● ASP.NET MVC Action方法的调用与Filter的执行…
上一篇文章介绍了OAuth2.0以及如何使用.Net来实现基于OAuth的身份验证,本文是对上一篇文章的补充,主要是介绍OAuth与Jwt以及OpenID Connect之间的关系与区别. 本文主要内容有: ● Jwt简介 ● .Net的Jwt实现 ● OAuth与Jwt ● .Net中使用Jwt Bearer Token实现OAuth身份验证 ● OAuth与OpenID Connect 注:本章内容源码下载:https://files.cnblogs.com/files/selimsong/…
ASP.NET没有魔法——ASP.NET与数据库 ASP.NET没有魔法——ASP.NET MVC 与数据库之MySQL ASP.NET没有魔法——ASP.NET MVC 与数据库之ORM ASP.NET没有魔法——ASP.NET MVC 与数据库之MySQL&EF ASP.NET没有魔法——ASP.NET MVC 与数据库之EntityFramework配置与连接字符串 ASP.NET没有魔法——ASP.NET MVC 与数据库之Entity Framework Migrations ASP.…
ASP.NET MVC的路由是MVC应用的一个核心也是MVC应用处理的入口,作为一个开发者,在正常情况下仅仅需要做的就是根据需求去定义实体.业务逻辑,然后在MVC的Controller中去调用.View中去展现,“路由”仅仅是定义一个路由表,使用户在点击一个链接时,应用能够命中正确的Controller.正确的Action并获取到正确的参数,使程序能够正常运行. 但ASP.NET没有魔法,一个HTTP请求为什么能够被ASP.NET识别为MVC请求,而不是Web Page或者是静态资源文件?MVC…
之前的文章介绍了MVC如何通过ControllerFactory及ControllerActivator创建Controller,而Controller又是如何通过ControllerBase这个模板完成了功能的拓展及业务的执行.这一系列MVC类型的设计处处都体现了IoC的设计原则,所以本章将从以下几点对ASP.NET MVC中的IoC进行介绍: ● 什么是IoC ● ASP.NET MVC中的IoC ● 什么是DI ● IoC容器与依赖解析器(Dependency Resolver) ● AS…