zoukankan      html  css  js  c++  java
  • SpringSocial和OAuth协议开发第三方登陆

    1.OAuth协议简介

    通过令牌解决密码泄露问题是OAuth的使命

    OAuth角色流程

    1,服务提供商(Provider),提供令牌的应用。

      1认证服务器(Authorization Server) 发出去token

      2资源服务器(Resource Server) 验证token发资源

    2,资源所有者(Resource Owner),就是用户

    3,第三方应用(Client),想获取用户信息的应用。

    流程

    这是常用的四种授权模式中的授权码模式,特点是是用户在认证服务器上认证的,保证认证的正确性,如果是第三方应用向认证服务器发送认证请求,可能是伪造的,但是用户直接去认证可以避免。还有就是这个认证服务器会先发一个授权码给第三方应用服务器,然后第三方服务器会带着这个授权码去请求令牌,这样就要求第三方应用要有一个服务器,同样也是提高安全性,因为这样就会让第三方将令牌放到服务端,用户客户端不可见,还有一种简化模式是不需要这个授权码的,当然这样相对就会不安全。

    2.SpringSocial

    当springsocial通过令牌拿取用户信息并且构建Authentication放入SecurityContext的时候,就表示用户登陆了,而上面这幅图里面的流程是别SpringSecurity封装到一个SocialAuthenticationFilter的过滤器里面了

    代码实现:

    1ServiceProvider接口是由服务提供商负责实现的,OAuth2Operations接口负责流程里面1-5步的操作api接口是用来方便用户自定义信息的接口,

    2connection是封装用户信息的实例,它是由ConnectionFactory创建的,ConnectionFactory里面要有服务提供的信息,所以要有ServiceProvider去走完它的流程。apiAdapter是负责将不同的服务提供商提供的信息整合成标准的connection。然后就是对应关系,DB UserConnection负责存储用户的对应关系,然后操作这个UserConnection是UserConnectionRespository。

    到此只是完成了获取qq等应用的授权令牌,但是并没有将token放到springsecurity里面进行登陆验证,下面开始走完springsecurity完成登陆过程

     springsocialoauth开发token验证方式,适用pc前后端分离和移动app的用户验证。

    zhumiao
  • 相关阅读:
    字符串练习
    Python基础
    熟悉常见的Linux命令
    大数据概述
    实验三 递归下降分析法
    简化C语言文法
    实验一 词法分析程序实验
    词法分析程序
    制作首页的显示列表
    完成登录功能
  • 原文地址:https://www.cnblogs.com/zhumiao/p/9894363.html
Copyright © 2011-2022 走看看