单点登陆系统概述

多点登录

传统的登录系统中,每个站点都实现了自己的专用登录模块。各站点的登录状态相互不认可,各站点需要逐一手工登录。例如:
image.png
这样的系统,我们又称之为多点登陆系统。应用起来相对繁琐(每次访问资源服务都需要重新登陆认证和授权)。与此同时,系统代码的重复也比较高。由此单点登陆系统诞生。

单点登录

单点登录,英文是 Single Sign On(缩写为 SSO)。即多个站点共用一台认证授权服务器,用户在其中任何一个站点登录后,可以免登录访问其他所有站点。而且,各站点间可以通过该登录状态直接交互。例如:
image.png

授权认证实现

单点登录服务为一个独立的微服务,其他服务可以调用此服务,为一个独立的项目工程

准备

  1. 添加依赖

    1. <dependencies>
    2. <dependency>
    3. <groupId>org.springframework.boot</groupId>
    4. <artifactId>spring-boot-starter-web</artifactId>
    5. </dependency>
    6. <dependency>
    7. <groupId>org.springframework.cloud</groupId>
    8. <artifactId>spring-cloud-starter-oauth2</artifactId>
    9. </dependency>
    10. <dependency>
    11. <groupId>com.alibaba.cloud</groupId>
    12. <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    13. </dependency>
    14. <dependency>
    15. <groupId>com.alibaba.cloud</groupId>
    16. <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    17. </dependency>
    18. </dependencies>
  2. 添加配置文件 ```yaml server: port: 8071 spring: application: name: sca-auth cloud: nacos: discovery:

    1. server-addr: localhost:8848

    config:

    1. server-addr: localhost:8848
  1. 3. 创建启动类
  2. ```java
  3. @SpringBootApplication
  4. public class ResourceAuthApplication {
  5. public static void main(String[] args) {
  6. SpringApplication.run(ResourceAuthApplication.class, args);
  7. }
  8. }

业务描述

我们的单点登录系统最终会按照如下结构进行设计和实现,例如:

image.png
实现登录时,会在UI工程中,定义登录页面(login.html),然后在页面中输入自己的登陆账号,登陆密码,将请求提交给网关,然后网关将请求转发到auth工程,登陆成功和失败要返回json数据.