认证授权之Identity Server(一)

大家好,我是大成子。疫情无情人有情,希望大家2020年更好!认证和授权几乎是每个项目中都有的知识点,今天学习认证授权框架Identity Server第一节。

认证(Authentication)和授权(Authorization)

认证即为你是谁,而授权则是你能做什么

那先来说说Identity Server。Identity Server4是基于ASP .NET Core的实现OpenId Connect和OAuth 2.0协议的框架。它具有以下特点:

  • 身份认证即服务
  • 单点登录/注销 单点登录Single Sign On(SSO)[在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统]
  • API访问控制
  • 联盟网关
  • 成熟开源社区生态
  • 免费和行业支持

应用场景

  • 微服务架构中的身份认证服务以及各个微服务的访问控制
  • 多类型应用程序统一单点登录/注销
  • 开放平台
  • 无状态用户登录

OAuth 2.0协议

OAuth 2.0 是目前最流行的授权机制,用来授权第三方应用(客户端),获取用户数据

v2-a61515d866d9cf80371655b353fb27d3_b.jpg

如果上面机制图看不明白,可以看我手画的(字有点丑,将就着看,(*^▽^*)),如下:

v2-af402a94e5565489778755fe8145a55c_b.jpg

OAuth 2.0协议是一个委托协议,它让应用可以代表用户的身份来访问某些资源,注意,是代表而不是假冒或者模仿。应用从资源所有者那里获取授权之后,会带着access token(访问令牌)来访问受到保护的资源。当用户使用某个客户端应用(WPF、http://ASP.NET Core MVC等其他应用)访问某些受到保护的资源时,资源所有者告诉请求,需要经过授权。应用随即向授权服务器请求获取访问令牌,授权服务器确定其拥有相应权限后给予访问令牌。应用拿着访问令牌即可访问收到保护的资源(Protected Resource:比如web api资源等)。

Open Connect协议

OpenID Connect和OAuth 2.0非常相似。事实上OpenID Connect是OAuth 2.0之上的扩展。解决两个基本的安全问题,即身份验证和API访问,被合并为一个协议,通常只需一次往返认证服务。

授权模式

  • 客户端凭证模式(Client Credentials)
  • 密码模式(Resource Owner Password Credentials )
  • 授权码模式(Authorization Code)
  • 简化模式(Implicit):直接通过浏览器连接跳转申请令牌

常用名词术语

  • Scope(范围,区域)比如identity server中受到信任的应用可以访问的资源的范围
  • Identity 微软http://ASP.NET 的一个会员系统,可为应用添加注册登录功能
  • Access Token 访问令牌
  • OIDC=OpenId Connect
  • Identity Server 认证授权服务器
  • refresh token 刷新令牌
  • JwtBearer:http身份验证。Bearer认证也叫令牌认证,是一种http认证方案,其中包含的安全令牌叫Bearer Token、因此Bearer核心是token,但是token需要加密,保证它的安全,一种方式是使用https,另一种就是对token进行加密签名。Jwt就是一种比较流行的token编码格式
  • JWT:json web token:一种token加密方式
  • Claim:用户身份信息单元,表示一个用户身份的某个信息,采用键值对表现形式,一组Claim组成一个用户身份
  • 等其他名词我们将在后续的代码实践环节当中进行讲解

Identity Server 原理图

v2-81a9823ef9b7f651738fa91c40f50b3e_b.jpg

好了,今天的学习到这里基本结束,下次再见。

更多文章,尽在微信公众号:dotNET学习天地