EASY-SSO gitee地址 https://gitee.com/xmingtx/easy-sso

EASY-SSO

  • EASY-SSO是一个分布式单点登录框架。只需要登录一次就可以访问所有相互信任的应用系统。
  • 拥有”轻量级、分布式、跨域、Cookie+Token均支持、Web+APP均支持”等特性。
  • 支持SpringBoot服务和非SpringBoot服务集成

包含模块

  • easy-sso-server 单点登录服务端,主要负责登录认证、提供统一登录页面等
  • easy-sso-sdk 单点登录核心包,主要包含配置类、过滤器等,支持非SpringBoot客户端集成
  • easy-sso-springboot-starter SpringBoot starter插件,支持SpringBoot客户端集成
  • easy-sso-client 单点登录客户端demo,提供客户端集成案例,另外此模块下又分为easy-sso-client-sample(非SpringBoot客户端)和easy-sso-client-springboot(SpringBoot客户端)两个集成案例

客户端集成

SpringBoot客户端集成

  1. 在pom.xml文件中添加如下依赖:
<dependency>
    <groupId>com.mk</groupId>
    <artifactId>easy-sso-springboot-starter</artifactId>
    <version>${lastest.version}</version>
</dependency>
  1. 在启动类上添加@EnableSso注解,如下:
@EnableSso
@SpringBootApplication
public class SsoClientApplication {

    public static void main(String[] args) {
        SpringApplication.run(SsoClientApplication.class);
    }
}
  1. 在application.yml配置文件中添加如下配置:
easy:
  sso:
    client:
      #是否启用sso客户端
      enable: true
      #客户端类型[web|app]
      client-type: app
      #sso服务端地址
      sso-server: http://127.0.0.1:8888/
      #登录地址
      login-url: http://127.0.0.1:8888/oauth/login
      #退出接口地址
      logout-url: /oauth/logout
      #忽略校验直接放行的地址
      ignore-urls: /sso/loginPage,/sso/login,/oauth/login
      #直接放行的静态资源后缀
      ignore-resources: .js, .css, .jpg, .png, .ico, .html
      #ajax请求未认证响应配置
      ajax-failure-response:
        #响应类型
        content-type: application/json
        #响应状态码
        code: 401
        #提示信息
        msg: 用户未登录
    #redis配置,客户端类型为app时需要配置,web类型客户端不需要配置
    redis:
      address: redis://127.0.0.1:6379

具体集成详情可参考easy-sso-client-springboot案例

非SpringBoot客户端集成

  1. 在pom.xml文件中添加如下依赖:
<dependency>
    <artifactId>easy-sso-sdk</artifactId>
    <groupId>com.mk</groupId>
    <version>${lastest.version}</version>
</dependency>
  1. 在web.xml中添加如下配置:
<filter>
    <filter-name>SsoWebFilter</filter-name>
    <filter-class>com.mk.sso.sdk.filter.SsoAuthenticationFilter</filter-class>
    <init-param>
      <param-name>configFile</param-name>
      <param-value>easy-sso-client.xml</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>SsoWebFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
  1. 在easy-sso-sdk模块的resources目录下复制一份easy-sso-client.xml文件到客户端服务的resources目录下,配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE easysso [
        <!ELEMENT easysso (clientType+,ignoreUrls?,ignoreResources?,ssoServer+,logoutUrl+,loginUrl+,ajaxFailureResponse?, jedisConfig?)>
        <!ELEMENT clientType      (#PCDATA)>
        <!ELEMENT ignoreUrls    (#PCDATA)>
        <!ELEMENT ignoreResources (#PCDATA)>
        <!ELEMENT ssoServer    (#PCDATA)>
        <!ELEMENT logoutUrl    (#PCDATA)>
        <!ELEMENT loginUrl    (#PCDATA)>
        <!ELEMENT ajaxFailureResponse (contentType?,code?,msg?)>
        <!ELEMENT contentType    (#PCDATA)>
        <!ELEMENT code    (#PCDATA)>
        <!ELEMENT msg    (#PCDATA)>
        <!ELEMENT jedisConfig (address+, maxTotal?, maxIdle?, minIdle?, maxWaitMillis?)>
        <!ELEMENT address    (#PCDATA)>
        <!ELEMENT maxTotal    (#PCDATA)>
        <!ELEMENT maxIdle    (#PCDATA)>
        <!ELEMENT minIdle    (#PCDATA)>
        <!ELEMENT maxWaitMillis    (#PCDATA)>
]>
<easysso>
    <!-- 应用类型 -->
    <clientType>web</clientType>
    <!-- 不需要验证的路径 -->
    <ignoreUrls>
        /login
        /sso/login
        /sso/loginPage
    </ignoreUrls>
    <!-- 不需要拦截的静态资源 -->
    <ignoreResources>
        .js
        .css
        .jpg
        .png
        .ico
        .html
    </ignoreResources>
    <!-- SSO Server地址 -->
    <ssoServer>http://127.0.0.1:8888/</ssoServer>
    <!-- 注销接口地址 -->
    <logoutUrl>/sso/logout</logoutUrl>
    <!-- 登录地址完整路径 -->
    <loginUrl>http://127.0.0.1:8888/sso/loginPage</loginUrl>
    <!-- ajax请求认证失败响应配置 -->
    <ajaxFailureResponse>
        <contentType>application/json</contentType>
        <code>401</code>
        <msg>用户未登录</msg>
    </ajaxFailureResponse>
    <!-- redis配置,客户端类型为app时需要配置 -->
    <!--
    <jedisConfig>
        <address>redis://127.0.0.1:6379</address>
        <maxTotal>200</maxTotal>
        <maxIdle>50</maxIdle>
        <minIdle>8</minIdle>
        <maxWaitMillis>10000</maxWaitMillis>
    </jedisConfig>
    -->
</easysso>