OAuth 2.0
在介绍OAuth之前,我们先简单介绍一下OpenID。OpenID 是一个以用户为中心的数字身份识别框架,它具有开放、分散性。OpenID 的创建基于这样一个概念:我们可以通过 URI (又叫URL或网站地址)来认证一个网站的唯一身份,同理,我们也可以通过这种方式来作为用户的身份认证。
OpenID的认证非常简单,当你访问需要认证的A网站时,A网站要求你输入你的OpenID用户名,然后会跳转你的OpenID服务网站,输入用户名密码验证通过后,再跳回A网站,而些时已经显示认证成功。除了一处注册,到处通行外,OpenID还可以使所有支持OpenID的网站共享用户资源,而用户可以控制哪些信息可以被共享,例如姓名、地址、电话号码等。
而OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,在官网对其是这样定义的:
An open protocol to allow secure API authorization in a simple and standard method from desktop and web applications.
OAuth关注的是第三方应用访问其受保护资源的能力,而OpenID关注的是第三方应用获取用户身份的能力。
如今大多网站都已不再支持OpenID,最为流行的是OAuth 2.0 (在本文中提到OAuth也均指2.0版本),而OpenID的最新版是OpenID Connect,是OpenID的第三代技术,下文会来介绍。
关于OAuth的介绍,网上非常之多,本文就不再过多叙述,而是主要讲解如何在 ASP.NET Core 中使用 OAuth 认证。如果你对 OAuth 并不了解,那么建议先去网上查看一下这方面的资料,再来阅读本文。而在本文中提到的OAuth认证指的是 ASP.NET Core 中的一种认证方式,而OAuth本身只是一种授权协议,希望不要混淆。
在 OAuth 协议中包含以下四种授权模式:
授权码模式(authorization code)
简化模式(implicit)
密码模式(resource owner password credentials)
客户端模式(client credentials)
在以上四种模式中,只有第一种Code模式需要服务端参与,其它的只在客户端就可完成,因此,在 ASP.NET Core 的 OAuth 认证中,也就只有Code模式。
总结: