认证授权的设计与实现

一、前言

每个网站,小到一个H5页面,必有一个登录认证授权模块,常见的认证授权方式有哪些呢?又该如何实现呢?下面我们将来讲解SSO、OAuth等相关知识,并在实践中的应用姿势。

二、认证 (authentication) 和授权 (authorization)

这两个术语通常在安全性方面相互结合使用,尤其是在获得对系统的访问权限时。两者都是非常重要的主题,通常与网络相关联,作为其服务基础架构的关键部分。然而,这两个术语在完全不同的概念上是非常不同的。虽然它们通常使用相同的工具在相同的上下文中使用,但它们彼此完全不同。

身份验证意味着确认您自己的身份,而授权意味着授予对系统的访问权限。简单来说,身份验证是验证您的身份的过程,而授权是验证您有权访问的过程。

authentication 证明你是你,authorization 证明你有这个权限。身份验证是授权的第一步,因此始终是第一步。授权在成功验证后完成。

例子:你要登陆论坛,输入用户名张三,密码1234,密码正确,证明你张三确实是张三,这就是 authentication;再一check用户张三是个版主,所以有权限加精删别人帖,这就是 authorization。

三、单点登录(SSO)

单点登录(Single Sign On),简称为 SSO,是比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

举例来说,QQ音乐和腾讯新闻是腾讯公司旗下的两个不同的应用系统,如果用户在腾讯新闻登录过之后,当他访问QQ音乐时无需再次登录,那么就说明QQ音乐和腾讯新闻之间实现了单点登录。

3.1 父域Cookie

最简单是实现方式是,将 Cookie 的 domain 属性设置为当前域的父域,那么就认为它是父域 Cookie。Cookie 有一个特点,即父域中的 Cookie 被子域所共享,换言之,子域会自动继承父域中的 Cookie。

  • 系统1:a.zxy.com
  • 系统2:b.zxy.com
  • 登录系统:login.zxy.com

系统1系统2登录系统已登录状态,登录cookie在zxy.com域需要登录登录(携带登录cookie信息)登录验证登录成功访问资源系统1系统2登录系统

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享