首页 > 其他分享 >电商系统-用户认证(一)

电商系统-用户认证(一)

时间:2025-01-16 17:22:41浏览次数:1  
标签:登录 用户 认证 服务器 电商 资源 客户端

  一、用户认证简介


  用户认证:who are you, 在客户端系统中,用户进行功能操作的时候,当前系统需要知道当前登录人的相关信息,比如说天猫:用户再将商品添加到购物车的时候,需要用户进行登录操作,获取用户信息。还有在用户下单的时候,也是需要知道当前用户的相关信息的。

  用户认证就是:让用户进行登录操作,从而获取到用户的相关信息。
  对于客户端系统来说。登录操作可以分为:单点登录,第三方账号登录

  下面流程图描述了用户要操作的各个微服务,用户查看个人信息需要访问客户微服务,下单需要访问订单微服务,秒杀抢购商品需要访问秒杀微服务。每个服务都需要认证用户的身份,身份认证成功后,需要识别用户的角色然后授权访问对应的功能。

 


  1.1 单点登录
  用户访问的项目中,至少有3个微服务需要识别用户身份,如果用户访问每个微服务都登录一次就太麻烦了,为了提高用户的体验,我们需要实现让用户在一个系统中登录,其他任意受信任的系统都可以访问,这个功能就叫单点登录。

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

  单点登录即:一处登录,处处登录。对于客户端系统来说,他内部存在很多子系统,比方说当前的首页系统,搜索系统,商品详情页系统,订单系统等等。用户只要在其中某一个系统登录成功之后,那么同时的其他子系统也会处于当前的登录状态,这就是所谓的单点登录。

  基于单点登录延伸出了第三方登录,因为在传统的登录操作中,用户需要在本系统内部进行注册,然后基于注册的用户名和密码完成登录操作。但是现在大多数人都有,像微信、QQ、微博这些账号,为了方便用户进行操作。当前系统也会允许用户不用本系统的账号密码进行登录。
  而是通过第三方的,像微信、微博、QQ的这些账号信息来完成我们当前本系统的登录,从而方便了用户的访问这就是第三方登录。

 

  1.2 第三方账号登录
  随着国内及国外巨头们的平台开放战略以及移动互联网的发展,第三方登录已经不是一个陌生的产品设计概念了。 所谓的第三方登录,是说基于用户在第三方平台上已有的账号和密码来快速完成己方应用的登录或者注册的功能。而这里的第三方平台,一般是已经拥有大量用户的平台,国外的比如Facebook,Twitter等,国内的比如微博、微信、QQ等。

  二、认证技术解决方案


  2.1 单点登录技术方案
我们要在分布式系统中实现单点登录,我们一般都会单独搭建一个用户认证系统,并且将用户相关的身份信息存储在单独的存储介质中,一般都会选择使用Redis
  单点登录功能实现流程图:
  单点登录功能实现流程:

  客户端发起请求,首先会进入到我们的网关,然后由网关将用户请求转发到具体某一个服务上,对于服务来说,他们如果要进行用户认证的话都会来找到当前的认证系统,在认证系统中完成用户信息的认证。对于认证系统来说,它现在需要来获取以及存储 用户的相关信息,它就会把这些信息来存放到当前的Redis中。这就是实现单点登录的实现思路。

  Java中有很多用户认证的框架都可以实现单点登录:

1、Apache Shiro.
2、CAS 耶鲁大学提供的
3、Spring security spring提供的

  2.2 第三方登录技术方案
  2.2.1 Oauth2认证流程
  第三方认证技术方案最主要是解决认证协议的通用标准问题,因为要实现跨系统认证,各系统之间要遵循一定的 接口协议。

​   OAUTH协议为用户资源的授权提供了一个安全的、开放而又简易的标准。同时,任何第三方都可以使用OAUTH认 证服务,任何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP、JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间,因而OAUTH是简易的。互联网很多服务如Open API,很多大公司如Google,Yahoo,Microsoft等都提供了OAUTH认证服务,这些都足以说明OAUTH标准逐渐成为开放资源授权的标准。 Oauth协议目前发展到2.0版本,1.0版本过于复杂,2.0版本已得到广泛应用。

  参考:https://baike.baidu.com/item/oAuth/7153134?fr=aladdin
  Oauth协议:https://tools.ietf.org/html/rfc6749

  下边分析一个Oauth2认证的例子,网站使用微信认证的过程:

  1.客户端请求第三方授权

用户进入论坛的登录页面,点击微信的图标以微信账号登录系统,用户是自己在微信里信息的资源拥有者。

点击“用QQ账号登录”出现一个二维码,此时用户扫描二维码,开始给论坛网站授权。

  2.资源拥有者同意给客户端授权

资源拥有者扫描二维码表示资源拥有者同意给客户端授权,微信会对资源拥有者的身份进行验证, 验证通过后,QQ会询问用户是否给授权论坛网站访问自己的QQ数据,用户点击“确认登录”表示同意授权,QQ认证服务器会 颁发一个授权码,并重定向到论坛网站的网站。

  3.客户端获取到授权码,请求认证服务器申请令牌 此过程用户看不到,客户端应用程序请求认证服务器,请求携带授权码。

  4.认证服务器向客户端响应令牌 认证服务器验证了客户端请求的授权码,如果合法则给客户端颁发令牌,令牌是客户端访问资源的通行证。 此交互过程用户看不到,当客户端拿到令牌后,用户在论坛网站看到已经登录成功。

  5.客户端请求资源服务器的资源 客户端携带令牌访问资源服务器的资源。 论坛网站携带令牌请求访问微信服务器获取用户的基本信息。

  6.资源服务器返回受保护资源 资源服务器校验令牌的合法性,如果合法则向用户响应资源信息内容。 注意:资源服务器和认证服务器可以是一个服务也可以分开的服务,如果是分开的服务资源服务器通常要请求认证 服务器来校验令牌的合法性。

  Oauth2.0认证流程如下:
  引自Oauth2.0协议rfc6749 https://tools.ietf.org/html/rfc6749

 

 

Oauth2包括以下角色:

1、客户端 本身不存储资源,需要通过资源拥有者的授权去请求资源服务器的资源,比如:畅购Android客户端、畅购Web客户端(浏览器端)、微信客户端等。

2、资源拥有者 通常为用户,也可以是应用程序,即该资源的拥有者。

3、授权服务器(也称认证服务器) 用来对资源拥有的身份进行认证、对访问资源进行授权。客户端要想访问资源需要通过认证服务器由资源拥有者授 权后方可访问。

4、资源服务器 存储资源的服务器,比如,畅购用户管理服务器存储了畅购的用户信息,微信的资源服务存储了微信的用户信息等。客户端最终访问资源服务器获取资源信息。

2.2.2 Oauth2在项目的应用
Oauth2是一个标准的开放的授权协议,应用程序可以根据自己的要求去使用Oauth2,项目中使用Oauth2可以实现实现如下功能:

1、本系统访问第三方系统的资源

2、外部系统访问本系统的资源

3、本系统前端(客户端) 访问本系统后端微服务的资源。

4、本系统微服务之间访问资源,例如:微服务A访问微服务B的资源,B访问A的资源。

标签:登录,用户,认证,服务器,电商,资源,客户端
From: https://www.cnblogs.com/kongsq/p/18675408

相关文章

  • Linux---(2)---用户和组(用户)
    用户前言用户一、理解Linux多用户、多任务的特性二、用户分类三、用户配置文件用户账户信息文件用户账户密码文件四、添加用户五、给用户添加密码六、删除用户七、修改用户小实验:用VIM创建用户1.创建用户2.切换用户3.创建家目录4.查看用户5.创建组6.切换用户结语......
  • 【C++】开源:ImGui图形用户界面库配置与使用
    项目介绍项目Github地址:https://github.com/ocornut/imguiDearImGui(ImGui)是一个开源的、用C++编写的图形用户界面(GUI)库。它由OCornut创建,旨在为应用程序和工具提供创建用户界面的简单高效的方式。以下是DearImGui的一些主要特性和特点:1.即时模式GUI:ImGui遵循即......
  • windows本地认证
    windows本地认证本地认证概述本地认证最简单的例子就是我们的电脑上存储着自己的账号密码,无论电脑是否联网,只要能开机,就可以输入账号密码登录到电脑中,工作组就是采用本地认证。那认证流程是什么样子呢?简单流程如下winlogon.exe(即WindowsLogonProcess):是WindowsNT用户登陆......
  • 亚矩阵云手机:服务于未来新型电商矩阵的助力者
    亚矩阵云手机是基于端云一体虚拟化技术通过云网、安全、AI等数字化能力,弹性适配用户个性化需求,释放手机本身硬件资源,随需加载海量云上应用的手机形态简单来说,云手机=云服务器+AndroidOS,用户可以远程实时控制云手机,实现安卓APP的云端运行;也可以基于云手机的基础算力,高......
  • Windows系统下NoteFlow的下载:提供直观、易用的界面,使用户能够轻松创建和连接笔记节点
    NoteFlow(适用于python3.9及以上):功能:节点笔记软件,有助于更好地组织和管理笔记内容。特点:提供直观、易用的界面,使用户能够轻松创建和连接笔记节点。一.从github上获取创作者的代码跳伞到github下载文件压缩包二.Windows只按照pip就行使用pip安装(适用于所有平台)打开命令行......
  • 【OAuth2框架】理解和实战 OAuth2 认证授权
    你知道互联网大厂最怕的是什么吗?但凡有点这样的风吹草动,我们就要花费大量的时间进行修复和上线。一点都不敢耽误,对于紧急类型的,基本当天发现,当天就要升级上线。那是什么问题呢?......
  • 国内电商行业(其一):业务知识与业务指标
    国内电商行业一、业务知识常见的电商平台:“万能的淘宝”、“3C起家的京东”、“病毒式传播的拼多多”理解2个单词:B是business的缩写,指企业C是Consumer的缩写,指个人用户从卖家、买家的维度,电商主要可以分为以下4种业务模式:企业卖家——企业买家(BusinesstoBusiness,B2B):例......
  • 如何在网站中安全有效地修改Java变量,确保功能正常且不影响用户体验?
    修改网站中的Java变量是确保功能正常和用户体验的重要步骤。以下是详细的指南,帮助您顺利完成这一任务:确定修改需求:明确具体的修改需求,例如更新变量值、添加新变量或删除旧变量。制定详细的修改计划,确保每个改动都有明确的目标。备份现有文件:在进行任何更改之前,请确保......
  • 数字先锋 | “点击就成片”,中国电商人是懂做生意的!
    在数字经济快速发展的背景下,生成式人工智能(AI)正以前所未有的速度重塑各产业的商业版图。其中,电商产业与生成式AI的深度融合,为行业带来了前所未有的创新机遇。今天,我们一起走进电商浪潮中的时尚引路者——蘑菇街,探访其如何利用生成式AI技术打造电商“淘金工坊”。 蘑菇街,作为电......
  • 【开源】基于SpringBoot框架电商平台(计算机毕业设计)+万字毕业论文 T192
    系统合集跳转源码获取链接点击主页更能获取海量源码10年计算机开发经验,主营业务:源码获取、项目二开、语音辅导、远程调试、毕业设计、课程设计、毕业论文、BUG修改一、系统环境运行环境:最好是javajdk1.8,我们在这个平台上运行的。其他版本理论上也可以。IDE环境......