认证授权流程及原理分析

简介: 认证授权流程及原理分析

1、认证 (Authentication) 和授权 (Authorization)的区别是什么?

认证(Authentication):你是谁?

授权 (Authorization):你有什么权限?

稍微正式点(啰嗦点)的说法就是:

  • Authentication(认证) 是验证您的身份的凭据(例如用户名/用户ID和密码),通过这个凭据,系统得以知道你就是你,也就是说系统存在你这个用户。所以,Authentication 被称为身 份/用户验证。
  • Authorization(授权) 发生在 Authentication(认证) 之后。授权嘛,光看意思大家应该就明白,它主要掌管我们访问系统的权限。比如有些特定资源只能具有特定权限的人才能访问比如 admin,有些对系统资源操作比如删除、添加、更新只能特定人才具有。

这两个一般在我们的系统中被结合在一起使用,目的就是为了保护我们系统的安全性。

2、什么是Cookie ? Cookie的作用是什么?如何在服务端使用 Cookie ?

Cookie 和 Session都是用来跟踪浏览器用户身份的会话方式,但是两者的应用场景不太一样。

Cookie 存放在客户端,一般用来保存用户信息。

应用场景:

  • 自动登录:在 Cookie 中保存已经登录过的用户信息,下次访问网站的时候⻚面可以自动帮你登录的一 些基本信息给填了。
  • 使用Cookie 保存 session 或者 token ,向后端发送请求的时候带上 Cookie,这样后端就能取 到session或者token了。这样就能记录用户当前的状态了,因为 HTTP 协议是无状态的。
  • Cookie 还可以用来记录和分析用户行为。举个简单的例子你在网上购物的时候,因为HTTP协议 是没有状态的,如果服务器想要获取你在某个⻚面的停留状态或者看了哪些商品,一种常用的实 现方式就是将这些信息存放在Cookie。

3、Cookie 和 Session 有什么区别?如何使用Session进行身份验证?

Session 的主要作用就是通过服务端记录用户的状态。

典型的场景是购物⻋,当你要添加商品到购物 ⻋的时候,系统不知道是哪个用户操作的,因为 HTTP 协议是无状态的。服务端给特定的用户创建特定 的 Session 之后就可以标识这个用户并且跟踪这个用户了。

Cookie 数据保存在客户端(浏览器端),Session 数据保存在服务器端。相对来说 Session 安全性更 高。如果使用 Cookie 的一些敏感信息不要写入 Cookie 中,最好能将 Cookie 信息加密然后使用到的 时候再去服务器端解密。

那么,如何使用Session进行身份验证?

很多时候我们都是通过 SessionID 来实现特定的用户,SessionID 一般会选择存放在 Redis 中。举个 例子:用户成功登陆系统,然后返回给客户端具有 SessionID 的 Cookie,当用户向后端发起请求的时 候会把 SessionID 带上,这样后端就知道你的身份状态了。关于这种认证方式更详细的过程如下:

  1. 用户向服务器发送用户名和密码用于登陆系统。
  2. 服务器验证通过后,服务器为用户创建一个 Session,并将 Session信息存储 起来。
  3. 服务器向用户返回一个 SessionID,写入用户的 Cookie。
  4. 当用户保持登录状态时,Cookie 将与每个后续请求一起被发送出去。
  5. 服务器可以将存储在 Cookie 上的 Session ID 与存储在内存中或者数据库中的 Session 信息进行比对,以验证用户的身份,返回给用户客户端响应信息的时候会附带用户当前的状态。
相关文章
|
7月前
|
存储 安全 JavaScript
【分布式技术专题】「授权认证体系」深度解析OAuth2.0协议的原理和流程框架实现指南(授权流程和模式)
在传统的客户端-服务器身份验证模式中,客户端请求服务器上访问受限的资源(受保护的资源)时,需要使用资源所有者的凭据在服务器上进行身份验证。资源所有者为了给第三方应用提供受限资源的访问权限,需要与第三方共享它的凭据。这就导致一些问题和局限:
496 2
【分布式技术专题】「授权认证体系」深度解析OAuth2.0协议的原理和流程框架实现指南(授权流程和模式)
|
1月前
|
存储 开发工具 数据库
认证源码分析与自定义后端认证逻辑
认证源码分析与自定义后端认证逻辑
35 0
认证源码分析与自定义后端认证逻辑
|
安全 API
04 Shrio身份认证流程
04 Shrio身份认证流程
56 0
04 Shrio身份认证流程
11 Shrio 授权流程
11 Shrio 授权流程
41 0
|
安全 API 数据库
五.SpringSecurity基础-授权流程
SpringSecurity基础-授权流程
|
安全 API 数据库
SpringSecurity基础-授权流程
授权一定是在认证通过之后,授权流程是通过FilterSecurityInterceptor拦截器来完成,FilterSecurityInterceptor通过调用SecurityMetadataSource来获取当前访问的资源所需要的权限,然后通过调用AccessDecisionManager投票决定当前用户是否有权限访问当前资源。授权流程如下
144 0
|
存储 缓存 安全
一.SpringSecurity基础-认证和授权概述
SpringSecurity基础-认证和授权概述
|
存储 缓存 安全
SpringSecurity基础-认证和授权概述
RBAC是基于角色的访问控制(Role-Based Access Control )在 RBAC 中,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限。这就极大地简化了权限的管理。这样管理都是层级相互依赖的,权限赋予给角色,而把角色又赋予用户,这样的权限设计很清楚,管理起来很方便。
102 0
|
敏捷开发 开发框架 JSON
一看就懂的IdentityServer4认证授权设计方案
一看就懂的IdentityServer4认证授权设计方案
|
安全 Java 数据安全/隐私保护
OAuth2.0实战!玩转认证、资源服务异常自定义这些骚操作!
OAuth2.0实战!玩转认证、资源服务异常自定义这些骚操作!