Web、OAuth2/SSO相关拾遗

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

原文地址:https://www.cnblogs.com/free-wings/p/9918180.html