首页 > 其他分享 >单点登录的三种实现方式

单点登录的三种实现方式

时间:2023-06-02 14:37:37浏览次数:48  
标签:单点 登录 用户 token session 三种 应用


单点登录的三种实现方式_SSO

假如你是企业管理者,你的公司正在使用包括考勤系统、差旅报销系统、在线协同工具等十几甚至几十套不同的软件系统,你的员工是否可以在这些不同的系统中,一次登录全部搞定?有没有发生多人共享同一账号,造成身份管理混乱的情况?

企业在统一员工身份管理时,面临诸多挑战:

1. 应用太多,员工账号密码众多,复杂难记,或设置单一,存在安全隐患。

2. 登录入口众多,没有统一界面,切换频繁,体验差。

3. 不同应用和员工数据之间割裂,不同设备和操作系统不兼容。

4. 不同应用、各地分支机构,档案信息不同。

单点登录可以解决这些痛点。

单点登录是一个身份验证机制,英文全称 Single Sign On,简称 SSO。它的定义是:在多个应用系统中,用户只需要登录一次,即可访问所有相互信任的应用系统,就像健康保一样,为你的身份做担保

单点登录 SSO 可以安全地确保员工只需要一组账号与密码,或通过标准协议认证、第三方身份源认证,就可以登录所有被授权的应用系统。例如,员工只需要登录个人 OA 系统的账号密码就可以访问飞书、销售易、客户系统等应用程序,无需再次输入账号和密码。

用户在登录后,服务器需要对其身份进行验证,主要实现方式有三种:

方式 1:通过 session 进行验证

session 称为“会话”,session 对象存储特定用户会话所需的属性及配置信息。简言之,session 就是服务器为了储存用户信息而创建的一个验证手段。用户在登录了一个系统后,服务器会将登录信息储存在一个 session 中,产生 session ID,客户端会保存该 ID;当这个用户再登录其他系统时,服务器会自动复制上一个模块的 session 到该服务器的 session 中,以获取用户登录信息,实现用户只登录一次,就可以登录其他系统。在用户退出登录时,服务器会自动删除 session。

整个过程均在服务器端完成,用户实际使用时没有感知。

单点登录的三种实现方式_SSO_02


方式 2:通过 cookie 进行验证

cookie 是某些网站为了辨别用户身份,由服务端生成,发给客户端暂时或永久保存的信息。简言之,cookie 就是一种存储用户数据的媒介。举例来说,当我们打开一个网站,比如新浪、CSDN、知乎时,输入用户名和密码登录后系统会默认存储这些信息,在下一次登录时,就不需要再次输入用户名和密码,而是默认直接登录,进入页面。

单点登录的三种实现方式_单点登录_03


方式 3:通过 token 进行验证

token 在身份认证中是令牌的意思,在词法分析中是标记的意思。一般作为邀请、登录系统使用。简言之,token 就是一种凭证,用户在登录注册时需要获取凭证,在经过验证后,方可登录相关被授权的应用。

用户在首次登录系统时输入账号和密码,服务器会收到登录请求,然后验证是否正确;

服务器会根据用户信息,如用户 ID、用户名、密钥、过期时间等信息生成一个 token 签名,然后发给用户;

用户验证成功后,返回 token;

前端服务器收到 token 后,存储到 cookie 或 Local Storage 里;

当用户再次登录时,会被服务器验证 token;

服务器收到用户登录请求后,对 token 签名进行比对:如果 token 验证正确,用户登录成功;如果 token 验证不正确,用户登录失败,跳转到登录页。

单点登录的三种实现方式_单点登录_04

session 与 cookie、token 验证的区别









session





cookie





token




存储端





服务器





客户端(比如浏览器)





客户端




存储量





不限,当访问增多时,速度下降





不超过 4KB,每个浏览器最多 20 个





由开发者设定             




安全性





比 cookie 安全性高,篡改者只能看到session_id,看不到其他信息





不安全,本地 cookie 易被盗取,篡改者可以看到该字段所有信息





安全,服务端会加密生成的令牌,存在客户端


在 Authing 中,无需手动编写操作 session、cookie 或是 token,控制台中可以一键体验单点登录功能,并且支持自建与集成第三方等多种方式,还可以通过 SDK 接入并自定义自己的应用与登录方式。

自建 SSO 方案

开启应用之间的单点登录后,同一个用户池下的不同应用之间的登录状态将会打通,终端用户只需登录一次即可在不同的应用之间畅行。

创建两个应用

首先你可以按照指引创建两个应用。

单点登录的三种实现方式_单点登录_05

配置单点登录

进入菜单 应用 > 单点登录 SSO,点击左上角添加应用,然后选择自建应用,在下方的列表里找到刚刚创建的应用,点击 + 号,就完成了多应用单点登录的配置。

单点登录的三种实现方式_SSO_06


单点登录的三种实现方式_单点登录_07

体验应用单点登录

进入 单点登录 SSO的应用列表标签,选择一个应用,点击体验登录。

单点登录的三种实现方式_SSO_08


在登录页面完成登录:

单点登录的三种实现方式_SSO_09


成功后会跳转到应用回调地址:

单点登录的三种实现方式_单点登录_10


接下来我们点击另一个应用的体验按钮:

单点登录的三种实现方式_单点登录_11


用户无需再次输入密码,直接进入了该应用的回调地址:

单点登录的三种实现方式_单点登录_12


使用 SDK 接入单点登录

详细的接入流程请见

代码参考:

https://github.com/Authing/authing-sso-demo/tree/feat-sso-v3-demo


标签:单点,登录,用户,token,session,三种,应用
From: https://blog.51cto.com/u_14931994/6402207

相关文章

  • 终端通过密钥方式登录 Linux
    一、密钥对生成注意:本地主机和目的主机需ping通1)确认服务器是否安装有ssh以及openssh服务端[zyy@kube-master~]$rpm-qa|grepopensshopenssh-6.6.1p1-25.el7_2.x86_64openssh-clients-6.6.1p1-25.el7_2.x86_64openssh-server-6.6.1p1-25.el7_2.x86_64[zyy@kube-mas......
  • 电脑登录某些网站失败的解决方法-关闭网络代理
    1、问题:通过浏览器登录B站,发现无法访问!2、问题,如图:3、解决:关闭电脑的网络代理具体步骤:在设置搜”网络”,选择代理服务器设置,然后关闭自动检查设置4、总结:有时候无法访问的原因可能是网络不好,有时候是因为电脑的代理原因,有的软件设置会自动管理电脑的代理,在电脑的代理局......
  • 远程登录Linux服务器
    目录一、所需软件二、软件安装三、Xshell远程连接Linux公网一、所需软件Xshell软件,Xshell是一个强大的安全终端模拟软件,它支持SSH1,SSH2,以及MicrosoftWindows平台的TELNET协议。从国内网搜到的一般是需要付费的版本,可以从国外网址获得free-for-home-school版本。网址:http......
  • IDE 中登录 Github 报错 Invalid authentication data. 404 Not Found-Not Found.
    IDE中登录 Github 报错Invalidauthenticationdata.404NotFound-NotFound. 一、方法一使用token令牌进行身份验证(推荐)相对于使用账号密码,token令牌是一种更安全的身份验证方式。1、进入Github的token管理页面:https://github.com/settings/tokens如下图可见,我之前在ID......
  • IDE 中登录 Github 报错 Invalid authentication data. 404 Not Found-Not Found.
    IDE中登录 Github 报错Invalidauthenticationdata.404NotFound-NotFound. 一、方法一使用token令牌进行身份验证(推荐)相对于使用账号密码,token令牌是一种更安全的身份验证方式。1、进入Github的token管理页面:https://github.com/settings/tokens如下图可见,我之前在ID......
  • 实现微信小程序登录的流程
     1.小程序调用wx.login()获取code(可以同时传输获取手机号的code)2.调用后端登录接口,将code作为参数传给后端(传输获取手机号的code)3.后端通过code调用微信后端登录接口换取openid(通过电话code获取用户手机号)4.后端通过Openid查询数据库,若查询到用户数据则返回完成登录流......
  • 登录页面
    登录页面可以用ajaxpost提交,提交之前用公钥加密(在服务器端用私钥解密)不允许重复提交用户名和密码需要校验如果用户名和密码输入错误,下次输入时需要填写验证码(防止程序自动攻击服务器)......
  • Android获取当前系统日期和时间的三种方法
    第一种方法SimpleDateFormatsimpleDateFormat=newSimpleDateFormat("yyyy年MM月dd日HH:mm:ss");//HH:mm:ss//获取当前时间Datedate=newDate(System.currentTimeMillis());time1.setText("Date获取当前日期时间"+simpleDateFormat.format(date)); ......
  • Linux的SSH免密登录配置
    一、SSH概念SSH为SecureShell(安全外壳协议)的缩写,简单说,SSH只是一种网络协议,用于计算机之间的加密登录传输,很多ftp、pop和telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据。而SSH就是专为远程登录会话和其他网络服务......
  • Linux - 配置服务器之间SSH免密登录
     如果集群中服务器之间没有配置SSH免密,那么SSH访问其他服务器时[root@node01bin]#sshnode02Theauthenticityofhost'node02(192.168.56.122)'can'tbeestablished.ECDSAkeyfingerprintisSHA256:iuntlxKiV34RaCDGi7UsV/Ng2oVwWgob9yX3wL+3zzo.ECDSAkeyfingerp......