OAuth2认证相关:(SSO资源访问流程也应类似设计,它与OAuth2第三方认证、授权不同,是同一个应用系统间的认证、授权过程,且需要实现一个点授权,可访问所有点,一个点退出,收回所有点授权,且有时需要集成统一API网关。但认证、授权流程与OAuth2相似,OAuth2的第三方用户授权动作对应SSO的认证服务器用户名/密码登录动作

https://shimo.im/docs/z7ggA56biOAfAdht/

https://www.jianshu.com/p/d74ce6ca0c33

注意多使用一步auth_code(认证码)获取accessToken,再使用accessToken获取资源的原因:

拿到了accessToken也就意味着拿到了授权,明码accessToken暴露出来可被任何人利用,这样使用资源不安全!

暴露auth_code,可在服务器后台程序验证它及应用提前申请的clientId,在后台程序中返回accessToken,并用accessToken访问资源。

而auth_code只能使用一次,这样多一步后台的验证处理,后台返回accessToken(不向用户暴露accessToken),和一次性的auth_code

大大增加了安全性。

auth_code是和client相对应的,那么即使拿到了auth_code还需要再次申请accessToken,申请accessToken时需要校验Client和state。

协议设计的原则就是只有Client(后台应用程序)能拿到accessToken而用户是拿不到的

附:

QQ授权登录

QQ登录OAuth2.0总体处理流程如下:

Step1:申请接入,获取appid和apikey

Step2:开发应用,并设置协作者帐号进行测试联调;

Step3放置QQ登录按钮

Step4:通过用户登录验证和授权,获取Access Token

Step5:通过Access Token获取用户的OpenID

Step6调用OpenAPI,来请求访问或修改用户授权的资源。

QQ互联官网开发攻略:http://wiki.connect.qq.com/%E5%BC%80%E5%8F%91%E6%94%BB%E7%95%A5_server-side

项目接入:

  • QQ登录按钮链接
  • http://localhost:8080/oauth/callback/call_qq
  • 获取Authorization Code
  • https://graph.qq.com/oauth2.0/authorize?response_type=code&redirect_uri=&state=0vnuc37nwskcs9cr3yo1wvaq&client_id=
  • 通过Authorization Code获取Access Token
  • https://graph.qq.com/oauth2.0/token?code=&client_id=&client_secret=&grant_type=&authorization_code&redirect_uri=
  • 通过accessToken获取openid
  • https://graph.qq.com/oauth2.0/me?access_token=
  • 通过accessToken和openid获取用户信息
  • https://graph.qq.com/user/get_user_info?access_token=&oauth_consumer_key=&openid=&format=json
  • 判断是否已经注册,为注册跳转到/bind_oauth方法进行账号注册与绑定。然后使用shiro登录。

HttpClient:

https://www.cnblogs.com/guxiong/p/6661272.html

https://www.cnblogs.com/LuckyBao/p/6096145.html

Spring、SpringBoot配置过滤器:

https://blog.csdn.net/weixin_37891479/article/details/79527641

https://www.cnblogs.com/begin2016/p/8947887.html

Spring拦截器:

https://segmentfault.com/a/1190000012072060

过滤器:

https://blog.csdn.net/MissEel/article/details/79351231

URL参数编码:

https://blog.csdn.net/u010648555/article/details/50011987

Spring重定向传参:

https://blog.csdn.net/qq_33366229/article/details/79106571

Web、OAuth2/SSO相关拾遗的更多相关文章

  1. 【SpringSecurityOAuth2】源码分析@EnableOAuth2Sso在Spring Security OAuth2 SSO单点登录场景下的作用

    目录 一.从Spring Security OAuth2官方文档了解@EnableOAuth2Sso作用 二.源码分析@EnableOAuth2Sso作用 @EnableOAuth2Client OA ...

  2. Spring Security OAuth2 SSO 单点登录

    基于 Spring Security OAuth2 SSO 单点登录系统 SSO简介 单点登录(英语:Single sign-on,缩写为 SSO),又译为单一签入,一种对于许多相互关连,但是又是各自 ...

  3. WEB安全防护相关响应头(下)

    前篇"WEB安全防护相关响应头(上)"中,我们分享了 X-Frame-Options.X-Content-Type-Options.HTTP Strict Transport Se ...

  4. spring boot:spring security+oauth2+sso+jwt实现单点登录(spring boot 2.3.3)

    一,sso的用途 ? 1,如果有多个应用系统,用户只需要登录一次就可以访问所有相互信任的应用系统. 不需要每次输入用户名称和用户密码, 也不需要创建并记忆多套用户名称和用户密码. 2,系统管理员只需维 ...

  5. 《Linux命令行与shell脚本编程大全》第二十五章 创建与数据库、web及电子邮件相关的脚本

    25.1 MySQL数据库 /* 但是我在虚拟机上安装的时候居然不提示输入密码. 这个可以参考http://blog.csdn.net/sinat_21302587/article/details/7 ...

  6. Spring Security OAuth2 SSO

    通常公司肯定不止一个系统,每个系统都需要进行认证和权限控制,不可能每个每个系统都自己去写,这个时候需要把登录单独提出来 登录和授权是统一的 业务系统该怎么写还怎么写 最近学习了一下Spring Sec ...

  7. Spring整合Redis&JSON序列化&Spring/Web项目部署相关

    几种JSON框架用法和效率对比: https://blog.csdn.net/sisyphus_z/article/details/53333925 https://blog.csdn.net/wei ...

  8. Java web项目配置相关

    引申 XML 命名空间(XML Namespaces) XML Schema 教程 XSD(XML Schema Definition) XML Schema 语言也称作 XML Schema 定义. ...

  9. OAuth2.0相关知识

    自己总结的可能有误差. 大致分为6个步骤: 1.注册相关应用,获取client_id,client_secret.2.第三方请求用户授权.用户点击按钮同意授权后,授权服务器将生成一个用户凭证(code ...

随机推荐

  1. gedit emacs

    emacs常用操作: 1)C-g:退出当前命令 2)C-x C-f:搜索文件打开 3)C-s:向前搜索 C-r:向后搜索 4)C-x 2:水平分割窗口 C-x 3:竖直分割窗口 5)C-x o:切换窗 ...

  2. HDU 1087 最长不下降子序列 LIS DP

    Nowadays, a kind of chess game called “Super Jumping! Jumping! Jumping!” is very popular in HDU. May ...

  3. Spark学习之路 (十一)SparkCore的调优之Spark内存模型

    摘抄自:https://www.ibm.com/developerworks/cn/analytics/library/ba-cn-apache-spark-memory-management/ind ...

  4. numpy高级应用

    reshape重塑数组 ravel 拉平数组 concatenate 最一般化的连接,沿一条轴连接一组数组 # print(np.concatenate([arr1,arr2],axis = 0)) ...

  5. JAVA中异常状况总结

    之前在<会当凌绝顶>这本书中学到过对于异常处理的知识,当时也是根据书上的代码,自己进行编写大概知道是怎么回事儿,王老师给我们上了一节课之后,发现异常处理可以发挥很大的作用.  通过在网络上 ...

  6. Linux服务器---流量监控MRTG

    MRTG MRTG可以分析网络流量,但是它必须依赖SNMP协议.将收集到的数据生成HTML文件,以图片的形式展示出来 1.安装一些依赖软件 [root@localhost bandwidthd-2.0 ...

  7. golang学习笔记5 用bee工具创建项目 bee工具简介

    golang学习笔记5 用bee工具创建项目 bee工具简介 Bee 工具的使用 - beego: 简约 & 强大并存的 Go 应用框架https://beego.me/docs/instal ...

  8. 利用arcgis发布综合又详细的地理定位服务

    数据: sheng:省,city:城市,xian:区县,street2:街道,life:生活服务(house:住宅小区)需求: 根据经纬度信息,得到详细地址信息,比如:甘肃省兰州市**县**街道**小 ...

  9. <转>jmeter(十三)常见问题及解决方法

    本博客转载自:http://www.cnblogs.com/imyalost/category/846346.html 个人感觉不错,对jmeter讲解非常详细,担心以后找不到了,所以转发出来,留着慢 ...

  10. Integer诡异特性

    package 代码测试; public class ceshi { public static void main(String[] args) { Integer i1=100; Integer ...