单点登录系统(SSO)设计说明书
单点登录系统(SSO)详细设计说明书
1、引言
1.1编写目的
为了单点登录系统(SSO系统)的可行性,完整性,并能按照预期的设想实现该系统,特编写需求说明书。同时,说明书也发挥与策划和设计人员更好地沟通的作用。
1.2背景
a.鉴于集团运营的多个独立网站(称为成员站点),每个网站都具有自己的身份验证机制,这样势必造成:生活中的一位用户,如果要以会员的身份访问网站,需要在每个网站上注册,并且通过身份验证后,才能以会员的身份访问网
站;即使用户以同样的用户名与密码在每个网站上注册时,虽然可以在避免用户名与密码的忘记和混淆方面有一定的作用,但是用户在某一段时间访问多个成员站点或在成员站点间跳转时,还是需要用户登录后,才能以会员的身份访问网站。这样不仅给用户带来了不便,而且成员网站为登录付出了性能的代价;
b.如果所有的成员网站,能够实现单点登录,不仅在用户体验方面有所提高,而且真正体现了集团多个网站的兄弟性。通过这种有机结合,能更好地体现公司大平台,大渠道的理念。同时,这样做也利于成员网站的相互促进与相互宣传。正是出于上面的两点,单点登录系统的开发是必须的,是迫在眉睫的。
1.3定义
单点登录系统提供所有成员网站的“单一登录”入口。本系统的实质是含有身份验证状态的变量,在各个成员网站间共用。单点登录系统,包括认证服务器(称Passport服务器),成员网站服务器。
会员:用户通过Passport服务器注册成功后,就具有了会员身份。
单一登录:会员第一次访问某个成员网站时,需要提供用户名与密码,一旦通过Passport服务器的身份验证,该会员在一定的时间内,访问任何成员网站都不需要再次登录。
Cookie验证票:含有身份验证状态的变量。由Passport服务器生成,票含有用户名,签发日期时间,过期日期时间和用户其它数据。
2、任务概述
2.1目标 SSO系统,是集团统一的Passport,SSO系统分两个阶段实施。第一阶段对于新注册的用户提供单点登录的功能。第二阶段,整合各个成员网站已有会员到单点登录系统中。
Passport服务器作为各个成员网站的惟一身份验证入口,需要考虑其性能,扩展性,稳定性,安全性和维护成本。尤其要注意第二阶段的开发,做到统筹考虑。
2.2最终用户的特点
最终用户是数以万计网民。这就确定了用户使用电脑的水平是参差不齐的,在开发单点登录系统时,力争做到界面友好,措词简单明了。用户不用学习,就能使用该系统。
3、需求规定
3.1 需求概述
1)注册:
a.成员网站重定向到Passport服务器的注册页面,并且带有返回URL和成员网站ID。
b.通过Passport注册页面创建会员后,保存会员验证票到数据库和passport服务器所在域cookie中。同时,在成员网站的数据库上创建与Passport服务器数据库中会员的映射关系。
c. 重定向到成员网站,填写会员个性信息。
d. 保存会员个性信息,并把重定向传入的验证票保存到本地cookie和创建Session状态变量。
2)登录:
a、 SSO系统要实现各个成员网站的无缝结合,只要会员经过了认证服务器的登录验证(Passport服务器),该会员访问其它任何的网站时,都不需要再次登录。
b、 会员在第一次登录时,Passport服务器验证身份之后,生成的cookie验证票,只需保存到Passport服务器所在域的cookie中,不能采用向每个成员网站所在的域中写cookie,防止响应时间太长,给会员带来不友好的浏览体验。同时,把下发给会员的cookie票保存到Passport服务器的数据库中,方便验证方式和会员行为统计的扩展。
c、 会员一经通过身份验证,成功登录了某个成员网站(假设为网站A),需要利用Session和cookie两种方式保存会员已经登录的状态。
d、 同一个浏览器进程中,会员在网站A的页面间跳转时,只需要根据Session中的状态变量加载登录框。不需要再与Passport服务器通信验证会员的身份。
e、 会员通过验证登录了网站A,若会员从网站A跳转或重新打开浏览器登录其它成员网站(假设网站B),都需要与Passport服务器通信验证会员的票。但是,这次验证不要Passport服务器与数据库中保存的验证票进行比较验证,只需要验证Passport服务器域中的cookie验证票据有效即可。
f、对于验证cookie票,能够实现加密和数字签名保证cookie的机密性,完整性和不可抵赖性。
g、 若果Passport服务器Down掉后,仍可以直接登录成员网站。
说明:上面高亮显示的表示二期开发功能。
3)登出、修改密码、找回密码和成员网站间的跳转,请查看IPO图表中相应的模块描述。
3.2对功能的规定
SSO系统包括注册、登录、登出、密码修改、密码找回、成员网站间跳转与用户管理模块。本说明书使用HIPO图描述系统机构和模块内部处理功能,它主要包括层次结构图和IPO图两个部分。层次结构图描述了整个系统的结构以及各个模块之间的关系;IPO图则描述了在某个特定模块内部的输入(I)、处理过程(P)、输出(O)思想。
A、系统结构图
图1 SSO系统结构图
B、层次结构图
图2系统层次结构图
C、IPO图表
备注:红色高亮部分,表示修改的逻辑
模块名称:会员注册 使用者:Passport服务器与各成员网站
输入部分 I 处理描述 P 输出部分 O
1. 重定向到Passport服务器,带
有返回URL和成员网站ID
2. 输入信息:邮箱、密码、区域(暂时没有使用验证码)。
3 3.提交注册信息,发出注册请求。 1.邮箱是否可用的实时检查,及时提示邮箱是否可用(这里的可用仅仅是表示符合邮箱的规范,并且该邮箱没有被注册,不表示真正的可用)。
2.密码安全级别实时提示。根据字符长度、含有字符的种类,计算安全级别,1. Passort服务器保存新会员信息和会员验证票到数据库中。
2. 成员网站Web Service,在成员网站数据库中添加会员信息,利用Passid建立与Passport服务器上会员的映射关系,并返回操作成功或失败状态信息。 4.注册用户从邮件中获得验证码,利用验证号激活用户,此时用户将成为合法会员。
5.会员个性信息(在成员网站填写) 并实时提示用户。安全级别分为:太短,差,良,优四个等级。
3.根据区域数据库,获得区域信息下拉框,结合会员区域IP,实现区域自动筛选,在允许的误差范围内不需手动选择区域。
4. 建立新会员
(1)验证会员提交的注册信息,若合法,把用于激活帐号的验证码发送到会员测试使用的邮箱中。
(2)会员使用验证码激活帐号,若激活成功,保存会员信息和会员验证票到数据库(Passport服务器数据库),并且验证票也保存到cookie中。同时调用成员网站的Web Service接口,把刚才产生的Passid保存到成员网站数据库中(建立映射关系)。
(3)重定向到成员网站。
(4)成员网站接收数据,提示会员填写个性信息,并提交到成员网站服务器。
(5)保存个性信息与接收的会员验证信息到成员网站数据库与cookie中,同时在Session中保存会员已验证的状态信息。
(5)导航会员到某个页面。 3. 修改成员网站数据库中会员的个性信息。
4.保存会员验证票到cookie中,同时保存会员通过验证的状态到Session中。
表1:会员注册模块
模块名称:会员登录 使用者:Passport服务器与各成员网站
输入部分 I 处理描述 P 输出部分 O
1. 会员第一次登录时输入Email
和密码。
2. 提交会员信息到1.在成员网站A含有登录框页面的
区,利用
2. 在Passport服务器上创建会员 Passport服务
器。
说明:加载登录框之前,成员网
站会首先与Passport服务器通信,
获得会员是否已经登录过,根据
状态加载登录框。 src=meber_auth.aspx> 在页头嵌入.aspx文件(成员网站上的文件)。
a.页面首先查看Session中的状态变量,如果状态变量为NULL,则查看cookie中的状态变量。
b.根据Session与Cookie中状态变量的情况,实现与Passport服务器上的Web
Service通信,确定会员是否已经登录。
2.根据会员登录与否,加载登录框。
3.如果没有登录,显示会员输入Email和密码的登录框。
4.会员提交信息到Passport服务器上的Web Service ,通过验证后生成cookie票,并返回登录状态值和cookie票到成员网站。成员网站保存登录状态变量与cookie票。
说明:会员通过任何一个成员网站登录成功后,表示已经登录了所有的成员网站。 验证票,保存到数据库与cookie中
3.Passport Web Service 返回登录
状态值与cookie验证票到成员网站。
4.保存会员验证票到cookie中,同时保存会员通过验证的状态到Session中。
表2:会员登录模块
模块名称:会员登出 使用者:Passport服务器与各成员网站
输入部分 I 处理描述 P 输出部分 O
1.成员网站重定向到Passport服务器的登出页面,并带有返回URL,成员网站ID和验证票。 1.在成员网站A重定向到Passport服务器,Passport接收cookie验证票,并验证是否合法。
2.Passport修改数据库中验证票使之失效,清除cookie中的验证票。
3.重定向到成员网站,清除cookie中的验证票和Session中登录状态变量。
4.导航会员到某个页面。 1.修改数据库中的验证票使之失效,并清除cookie。
2.重定向到成员网站。
SSO、单点登录、集成CAS、OAuth2
SSO、单点登录、集成CAS、OAuth2
JeeSite 已经默认集成了两种单点登录方式(Single Sign On):
1、SSO(简单登录)接口,实现快速登录系统。
2、与 Apereo CAS 服务器集成,快速实现系统登录(个人版)
并实现了第三方登录 OAuth2,如:微信、QQ、支付宝、等等
简单登录接口
系统登录:
1、设置 application.yml(v4.0.x:jeesite.yml)的
shiro.sso.secretKey 快速登录安全Key,若不设置将无法使用该接口。
shiro:
# 简单 SSO 登录相关配置
sso:
# 如果启用/sso/{username}/{token}单点登录,请修改此安全key并与单点登录系统key一致。
secretKey: thinkgem
# 是否加密单点登录安全Key
encryptKey: true
2、举例调用地址如下,调用完成后自动登录系统:
http://localhost/project/sso/{username}/{token}?url=/sys/user/list?p1=v1%26p2=v2&relogin=true
• username: 登录名,数据库中的 login_code 字段。
• token: 登录令牌,根据yml里配置的登录安全Key生产的密码。
• url: 登录之后要跳转的地址,如果url中携带参数,请使用转义字符,如“&”号,使用“%26”转义。
token生成方式:
String username = "system"; // 登录系统名
String secretKey = "thinkgem"; // yml 中设置的
shiro.sso.secretKey 参数值。
String token = Md5Utils.md5(secretKey + username + DateUtils.getDate("yyyyMMdd"));
单点登录(SSO)_统一身份认证解决方案
【疲于招架吗】
企业级综合身份管理工作时,您需要访问公司的多个业务系统,不同的用户名和密码,频繁的登录和切换,简易密码易遭盗用,复杂密码难以记忆。您是否遭遇过因遗忘密码耽误工作,甚至丢失密码造成泄密……?如果您正巧是IT系统管理者,维护公司各业务系统中庞大的、不断变化的用户信息,则足以让您精疲力尽。
东谷单点登录(SSO)解决方案
企业应用整合专家
成都东谷信息技术有限公司 E-mail cs@ Tel 86-28-85356500 Fax 86-28-85356507现代企业通常建有多项业务应用系统,例如人力资源管理系统、财务系统、OA系统、客户关系管理系统等。传统方式下,各业务系统分别为员工创建帐号和密码,拥有各自独立的用户信息;相对应的,每位员工则必须记住多个用户名和密码以访问不同的应用。问题随之而来:1.用户使用不便。用户必须设法记住若干个用户名和密码,并在登录每个业务系统时使用,要访问其他系统的资源则必须进行频繁的切换。2.管理维护复杂。It部门需单独维护每套业务系统的用户身份和存取管理,每一次用户情况发生变化都必须逐一在各个业务系统中修改用户信息,分配角色权限,任务繁重且容易出错。3.安全隐患严重。要每个用户都记住自己的多个用户名和密码是一件非常头疼的事情。用户常常会设置一些便于记忆的简单密码,例如生日,甚至一套简单密码在多个系统使用,造成保密强度降低。更有人将密码写成纸条放在办公桌上,给这些业务系统造成极大的安全隐患。由于维护工作头绪繁杂,管理员极有可能疏忽了在某业务系统中禁用离职员工的帐号,造成相应的商业信息被非法访问。资源等应用系统紧密集成。对用户信息的维护,只需要在统一用户管理界面进行修改,各业务系统便会自动更新,无需人为干预,这提高了用户信息的一致性,并减少了运维人员的工作量。按照业务流程,新进员工会在人力资源中注册,注册员工帐户会自动在活动目录(AD)中创建,并根据授权自动在其他业务系统中生成,用户信息统一从人力资源系统自动同步。研发背景
统一门户与业务系统的sso整合技术方案(单点登录)
统⼀门户与业务系统的sso整合技术⽅案(单点登录)
⼀、单点登录(SSO,Single Sign On)整合
⽬前计划接⼊统⼀门户的所有业务系统均为基于JavaEE技术的B/S架构系统。由于统⼀门户的单点登录技术选⽤的是JA-SIG组织开发的Cas
Server,故为了与Cas Server进⾏⽆缝整合,各业务系统选⽤的技术依然是由JA-SIG组织开发的Cas Client。
根据各业务系统服务端技术架构的不同,现提供如下2种整合⽅式:
1. 在web.xml中配置4个过滤器
此⽅式适⽤于所有JavaWeb应⽤。
1) 所需jar
cas-client-core-3.3.3.jar
slf4j-api-1.7.1.jar
2) 配置4个过滤器(其中两个可选)
CAS Authentication Filter
org.jasig.cas.client.authentication.AuthenticationFilter
casServerLoginUrl
http://CAS_SERVER/cas-server/login
serverName
http://CAS_CLIENT
CAS Authentication Filter
/*
CAS Validation Filter
org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter
casServerUrlPrefix
http://CAS_SERVER/cas-server
serverName
http://CAS_CLIENT
CAS Validation Filter
/*
CAS HttpServletRequest Wrapper Filter
org.jasig.cas.client.util.HttpServletRequestWrapperFilter
(二)单点登录统一认证(SSO)简单实现
(⼆)单点登录统⼀认证(SSO)简单实现
前⾯已经阐述了单点登录统⼀认证的核⼼框架基础 ,接下来就进⾏简单实现
开发⼯具及框架:
Visual Studio
.NET CORE 版本: 2.1
NuGet包:IdentityServer 4
⼀、新建 IdentityServer 4 认证应⽤程序(快速创建/⼿动创建)
1.⼿动使⽤ VS 创建
打开 VS,新建 Core 2.1 应⽤程序 QuickStart
展开项⽬,右键依赖项,选择管理 NuGet 程序包,输⼊ IdentityServer 4 选择低于 3.0 版本安装。
在项⽬下新建 Config.cs ⽂件
(.NET CORE 2.1 对应的 Microsoft.AspNetCore.Razor.Design 版本为 2.1.2,打开 csproj ⽂件修改)
2.使⽤控制台快速创建
md quickstart
cd quickstart
md src
cd src
dotnet new is4empty -n IdentityServer
cd..
dotnet new sln -n Quickstart
dotnet sln add .\src\IdentityServer\IdentityServer.csproj
这将创建以下基础项⽬⽂件及添加 IdentityServer 项⽬:
Properties\launchSettings.json 配置⽂件
IdentityServer.csproj 项⽬⽂件
Program.cs 和 Startup.cs 主应⽤程序⼊⼝点
Config.cs IdentityServer 资源和客户端配置⽂件
注:Properties\launchSettings.json 配置⽂件包含运⾏端⼝,如果需要修改可修改该⽂件。
3.添加对标准openid(主题ID)和profile(名字,姓⽒等)范围的⽀持
public static IEnumerable GetIdentityResources()
单点登录(SSO)详解
单点登录(SSO)详解
背景
在企业发展初期,企业使⽤的系统很少,通常⼀个或者两个,每个系统都有⾃⼰的登录模块,运营⼈员每天⽤⾃⼰的账号登录,很⽅便。
但随着企业的发展,⽤到的系统随之增多,运营⼈员在操作不同的系统时,需要多次登录,⽽且每个系统的账号都不⼀样,这对于运营⼈员
来说,很不⽅便。于是,就想到是不是可以在⼀个系统登录,其他系统就不⽤登录了呢?这就是单点登录要解决的问题。
单点登录英⽂全称Single Sign On,简称就是SSO。它的解释是:在多个应⽤系统中,只需要登录⼀次,就可以访问其他相互信任的应⽤系统。
如图所⽰,图中有4个系统,分别是Application1、Application2、Application3、和SSO。Application1、Application2、Application3没有登录模块,⽽SSO只有登录模块,没
有其他的业务模块,当Application1、Application2、Application3需要登录时,将跳到SSO系统,SSO系统完成登录,其他的应⽤系统也就随之登录了。这完全符合我们对单
点登录(SSO)的定义。
技术实现
在说单点登录(SSO)的技术实现之前,我们先说⼀说普通的登录认证机制。
如上图所⽰,我们在浏览器(Browser)中访问⼀个应⽤,这个应⽤需要登录,我们填写完⽤户名和密码后,完成登录认证。这时,我们在这个⽤户的session中标记登录状态
为yes(已登录),同时在浏览器(Browser)中写⼊Cookie,这个Cookie是这个⽤户的唯⼀标识。下次我们再访问这个应⽤的时候,请求中会带上这个Cookie,服务端会根据
这个Cookie找到对应的session,通过session来判断这个⽤户是否登录。如果不做特殊配置,这个Cookie的名字叫做jsessionid,值在服务端(server)是唯⼀的。
同域下的单点登录
⼀个企业⼀般情况下只有⼀个域名,通过⼆级域名区分不同的系统。⽐如我们有个域名叫做:,同时有两个业务系统分别为:和。我们要做单点
SSO单点登录统一身份认证系统
SSO单点登录统⼀⾝份认证系统
什么是单点登录
简单点说就是公司有A,B两个系统,我登录了A系统之后再跳转到B系统可以直接访问,⽽不需要再次登录B系统.
⼏种常见的单点登录实现⽅式
在讲解单点登录之前先讲解⼏个基本的概念:
Cookie:
Cookie是⼀段不超过4KB的⼩型⽂本数据,是保存在⽤户本地的,常见格式为:
Expires属性:设置Cookie的⽣存期
Domain属性:指定了可以访问该 Cookie 的 Web 站点或域
⽐如图中的Domain:192.168.1.72这就表⽰只能只有1.72下的请求可以使⽤这个cookie,百度什么的就不能使⽤这个cookie
Path属性:定义了Web站点上可以访问该Cookie的⽬录
其他:略
Session:
http请求是⽆状态的,但是我们⽇常访问系统的时候都是希望系统能记住我这个⽤户,这时候就要靠session去实现,因此session成为会话控制.但是光靠session还是⽆法实现会话控制的,还需要cookie的配置,如图所⽰:
这个JESSIONID就是保持会话的关键,它的value对应的就是该⽤户在服务器的sessionId,所以我们代码直接写HttpSession session = request.getSession(); 才不会数据错乱.
Ps:session的存在⽅便了我们的开发,但是也在⼀定程度上增加了⿇烦,⽐如多机部署时候的seesion丢失,
重定向
⼀句话,转发是服务器⾏为,重定向是客户端⾏为.
转发和重定向都可以由java后台实现,例如:
请求转发:request.getRequestDispatcher("/user").forward(request,response);
重定向:response.sendRedirect(request.getContextPath + "/user")
当设置转发之后,请求会直接去转发的地址,⽽重定向的话请求会先返回客户端,然后再由客户端重新发起请求去新的地址.这⾥就隐藏了⼀个知识点,当我在后台设置了cookie然后重定向的时候,其实我重定向的请求中已经带上了我设置的cookie
基于LDAP的单点登录方案的设计与实现
基于LDAP的单点登录方案的设计与实现
1项目背景
随着信息技术和网络技术的广泛普及,政府、公司、学校等公共系统的内部出现了各种各样的应用管理系统。这些管理系统中最重要的一类就是基于B/S结构的Web应用系统,如电子邮件服务等。这些应用一般通过浏览器访问Web服务器,服务器以页面表单的方式要求用户输入登录参数,用户输入并提交后,由Web服务器的脚本程序进行身份验证。
近年来,Web应用的使用进入成熟阶段,提供的信息和服务也越来越多。成功地管理和保护Web应用的信息和资源已经成为一个越来越复杂的挑战.身份认证管理是保护Web信息和资源的核心部分.一般的身份认证方法是在每个应用系统中保存各自的用户信息并建立独立的身份验证模块,使用独立的认证机制在各自的身份认证模块中认证。这种传统的身份认证方法将用户的“网络身份"分割成许多独立的碎片,这些碎片构成了繁多的一对一的客户服务关系,导致了更多的安全风险。同时如果用户要频繁访问不同系统,每进入一个系统就要登录一次,这无疑会耗费大量的时间,并且用户需要记忆大量的账号信息.
因此,基于安全和效率的考虑,信息系统急需有一个统一的、具有较高安全控制的身份验证和授权系统,以保证数据安全和用户操作方便。在本文中,我设计并实现了一个基于LDAP的单点登录系统,它能够很好地解决用户身份验证和授权的问题。
2单点登录系统介绍
单点登录系统(Single Sign-On,SSO),是指当用户访问多个需要认证的系统应用时,只需要初始进行一次登录和身份认证,就可以访问具有权限的任何系统,而不需要再次登录,后续系统会自动获取用户信息,从而识别出用户的身份。这样,无论用户要访问多少个不同系统间的关联应用,他只需要进行一次登录,而不需要用户重复输入认证信息.单点登录技术可以简化用户访问多种系统应用,避免用户由于需要记忆众多账号信息而出现的遗忘,而且可以减少口令等重要信息在网络传播时被截获的危险。
单点登录系统(SSO)设计说明书
单点登录系统(SSO)详细设计说明书
1、引言
1.1编写目的
为了单点登录系统(SSO系统)的可行性,完整性,并能按照预期的设想实现该系统,特编写需求说明书。同时,说明书也发挥与策划和设计人员更好地沟通的作用。
1.2背景
a.鉴于集团运营的多个独立网站(称为成员站点),每个网站都具有自己的身份验证机制,这样势必造成:生活中的一位用户,如果要以会员的身份访问网站,需要在每个网站上注册,并且通过身份验证后,才能以会员的身份访问网
站;即使用户以同样的用户名与密码在每个网站上注册时,虽然可以在避免用户名与密码的忘记和混淆方面有一定的作用,但是用户在某一段时间访问多个成员站点或在成员站点间跳转时,还是需要用户登录后,才能以会员的身份访问网站。这样不仅给用户带来了不便,而且成员网站为登录付出了性能的代价;
b.如果所有的成员网站,能够实现单点登录,不仅在用户体验方面有所提高,而且真正体现了集团多个网站的兄弟性。通过这种有机结合,能更好地体现公司大平台,大渠道的理念。同时,这样做也利于成员网站的相互促进与相互宣传。正是出于上面的两点,单点登录系统的开发是必须的,是迫在眉睫的。
1.3定义
单点登录系统提供所有成员网站的“单一登录”入口。本系统的实质是含有身份验证状态的变量,在各个成员网站间共用。单点登录系统,包括认证服务器(称Passport服务器),成员网站服务器。
会员:用户通过Passport服务器注册成功后,就具有了会员身份。
单一登录:会员第一次访问某个成员网站时,需要提供用户名与密码,一旦通过Passport服务器的身份验证,该会员在一定的时间内,访问任何成员网站都不需要再次登录。
Cookie验证票:含有身份验证状态的变量。由Passport服务器生成,票含有用户名,签发日期时间,过期日期时间和用户其它数据。
2、任务概述
2.1目标 SSO系统,是集团统一的Passport,SSO系统分两个阶段实施。第一阶段对于新注册的用户提供单点登录的功能。第二阶段,整合各个成员网站已有会员到单点登录系统中。
sso单点登录系统
sso单点登录系统
sso单点登录概念
1.⼀处登录,处处登录.会单独做⼀个单点登录系统,只负责颁发token和验证token,和页⾯登录功能.
2.通过在浏览器cookie中放⼊token,和在redis中对应token放⼊⽤户信息的⽅式,代替session共享,使⽤jwt(json web token)⾃定义⼀个携带⽤户信息token加密算法.
3.cookie中的token是已经使⽤过的token,取名oldToken . url地址栏中的token新颁发的token,取名newToken
做法:
1.⾸先⾃定义⼀个注解,作⽤在⽅法上.有3种状态:
1.1 如果为null,表⽰直接放⾏,例如商品详情页,⽤户可以不⽤登录直接访问.
1.2 如果为false,经常⽤在购物车⽅法上,表⽰可登录可不登录,⽤户不登录购物车数据保存cookie中,⽤户登录数据保存数据库并放redis⼀份.
1.3 如果为true,表⽰⽤户必须登录,例如购物车结算跳订单页⾯.
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface LoginRequired {
boolean isNeededSuccess() default true;
}
2.⾃定义拦截器,并加⼊到springr容器中
@Configuration
public class WebMvcConfiguration extends WebMvcConfigurerAdapter {
@Autowired
AuthInterceptor authInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry){
registry.addInterceptor(authInterceptor).addPathPatterns("/**");
基于OAuth2.0协议的单点登录系统方案设计
基于OAuth2.0协议的单点登录系统⽅案设计
⼀、什么是单点登录?
单点登录(Single Sign On),简称为 SSO,是⽐较流⾏的企业业务整合的解决⽅案之⼀。SSO 的定义是在多个应⽤系统中,⽤户只需要登录⼀次就可以访问所有相互信任的应⽤系统。---- 《百度百科》
换⽽⾔之,在公司业务逐渐壮⼤的过程中,开发了很多的⼦系统。每个⼦系统都有⾃⼰的⽤户的登录、注册模块,为了能够在公司内部统⼀⽤户登录授权功能,诞⽣了⼀个统⼀的⽤户登录认证系统,这个系统就可以称之为单点登录系统。
⼆、什么是 OAuth2.0 协议?
OAuth 是⼀个关于授权(authorization)的开放⽹络标准,在全世界得到⼴泛应⽤,⽬前的版本是2.0版。主要是⽤于在第三⽅平台上进⾏的⽤户授权,常见的⼀些场景,例如:QQ、微博、微信的授权登录。第三⽅开发平台的授权接⼊,例如:Shopify、速卖通、亚马逊等。
三、单点登录解决什么问题?
假设,当我们的 ERP 系统功能模块越来越多的时候,后期可能会拆分出产品库存系统、财务系统、订单系统、⼯单系统等,那是不是意味着每个系统都需要开发⼀套登录注册功能呢?如果每个系统有⼀套⾃⼰的⽤户体系,就会出现⽤户在使⽤的时候,需要重复注册、重复登录、重复记住对应的账号密码,⼀旦⼦系统多达⼗⼏个的时候,对于⽤户来说这种情况,显然是不能接受的。
其次对应我们开发⼈员来说,很显然也不可能每个系统开发⼀套相同的功能,因此我们需要有⼀套能够统⼀登录、注册、⽤户管理、权限等功能的系统。那么这样⼀套系统就是,今天要分享的单点登录系统。单点登录系统,能够让我们只需拥有⼀个账号,便可以访问任意的⼦系统,类似于我们拥有了⼀张通⾏证,⾏便天下,畅通⽆阻。
四、单点登录交互时序图
五、案例演⽰
1、授权界⾯
2、系统地址
3、关键代码
六、Ouath 2.0 授权模式的参数说明
1、客户端传递的参数
参数描述
response_type表⽰授权类型,必选项,此处的值固定为"code"
