赞
踩
距离上次写分享已有半年没有更新了,由于工作上的新项目、生活等方面的原因,迟迟未整理Spring Security Oauth2这块的内容。最近全国各地都在抗疫中,大家工作生活都受到影响,基本不能出门,尽量在家办公。当然我也不例外,利用比平时上班省下的些许通勤时间整理这篇分享。
上篇文章分享了如何创建Oauth2
授权服务器及最常用的授权码模式的使用过程,那么在实际项目中如何对接授权服务器实现对某些受保护资源的访问?相信大家都使用过各种平台的登录,比如CSDN
注册/登录,除了服务本身提供的账号方式,还可以通过社交账号的如qq
/github
/baidu
等方式登录,这种登录方式就是CSDN
利用这些社交服务商提供的Oauth2
授权服务来获取当前服务的信息,从而完成CSDN
注册/绑定。在这个过程中,CSDN
扮演的则是Oauth2
客户端或第三方应用,本文将创建一个demo项目,分享实现Oauth2
客户端获取授权的基本过程。
Oauth2
客户端对接实现一般有两种方式:
调用授权服务器提供的授权码接口、获取token
接口等来对接(交互过程可参考Spring Security Oauth2实践(1) - 授权码模式),属于最常用的方式,笔者在实际开发小应用项目过程中也用到这种方式,理解起来也很方便,缺点是需要自定义大量编码、封装拓展性依赖开发人员水平、url 302转发、登录状态维护等需要额外开发控制、多个Oauth2 Provider
时可能需要重新编码对接,关于这块过程可参考Spring Boot+OAuth2使用GitHub登录自己的服务.这里不再提供实现。
基于Spring Security Oauth2
生态提供的方式对接,框架本身将大量的调用交互细节封装,并且维护用户认证登录状态,提供了很多拓展接口/类方便自定义业务逻辑,开发往往只需要实现特定的接口并注入到相应的业务中就可以完成。缺点在于门槛较高、理解起来需要一点时间、涉及到Spring Security
认证状态维护、过滤器等细节往往需要阅读源码才理解怎么使用。一旦理解原理、配置使用等,则后续拓展将会非常方便,本文将采用这种方式实践。
Spring Security Oauth2
客户端实践值得注意的是,Spring Security OAuth2提供了一套客户端实现(本文采用的框架),Spring Boot也有它自己的方式,这种方式可参考Spring Boot官方指南中,实现、配置等与前者有区别。
Oauth2
授权服务器使用上篇分享搭建的环境,SpringBoot采用2.x。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.oauth.client</groupId>
<artifactId>oauth-client-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>oauth-client-demo</name>
<description>oauth-client-demo</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.11.RELEASE</ve
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。