Skip to content

Latest commit

 

History

History

easy-sso-server

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 

easy-sso-server

sso服务端

Usage

添加依赖

  • maven 方式
<dependency>
   <groupId>cn.chenzw.sso</groupId>
   <artifactId>easy-sso-server</artifactId>
   <version>1.0.0</version>
</dependency>
  • gradle 方式
compile group: 'cn.chenzw.sso', name: 'easy-sso-server', version: '1.0.0'

开启SSO

  • 使用@EnableSSO开启SSO服务
@EnableSSO
@Configuration
public class SSOConfig {

}

创建默认单点处理类

  • 继承cn.chenzw.sso.easy.server.support.AbstractSSOTemplate类,实现checkLoginedIn()login()方法
    • 可选择重写preHandler()validate()postHandler()等方法来实现更多的自定义功能
  • 添加@OSS注解,用于标识此类为单点处理类
    • source属性:指定此类处理哪些系统(*号表示处理所有系统的单点请求,也就是默认单点处理器,有且仅能有一个默认单点处理类)

示例:

@Component
@SSO(source = "*")
public class DefaultSSOTemplate extends AbstractSSOTemplate {

    /**
     *  判断是否已登录
     **/
    @Override
    protected boolean checkLoginedIn(SSODefinition ssoDefinition) {
        // 根据实际情况编写
        HttpSession session = ssoDefinition.getRequest().getSession();
        StaffInfo info = (StaffInfo) session.getAttribute("staffInfo");
        if (info != null && info.getLoginName().equals(ssoDefinition.getPlainUserName())) {
            return true;
        }
        return false;
    }

    @Override
    protected void login(SSODefinition ssoDefinition) {

        try {
            HttpServletRequest request = ssoDefinition.getRequest();
            HttpSession session = request.getSession();

            // 根据实际情况,编写单点成功后的处理逻辑(如,写入日志、写入session等)
        }  catch (Exception e) {
            throw new SSOException("SSO登录失败! 详细信息: [" + e.getMessage() + "]");
        }
    }
}

配置单点参数

  • 可在项目resources下新建sso.properties 或 直接在application.properties中添加单点配置参数
## 指定单点服务端私钥(必须)
sso.private-key=123456

## 以下配置可选

## 指定单点开放的url地址
sso.entrance-uri=/easy-sso
## 指定系统来源的url参数名称
sso.source-identifier=source
## 指定加密数据的url参数名称
sso.key-identifier=key
## 指定单点用户名的url参数名称
sso.username-identifier=username
## 指定单点成功后跳转的url参数名称
sso.redirect-url-identifier=redirectUrl
## 指定单点链接的时效(默认:30分钟)
sso.limit-milli-second=1800000
## 指定默认单点成功后的跳转地址(当未指定redirectUrl参数时)
sso.default-redirect-url=/

举例

配置修改如下:

sso.entrance-uri=/my-sso
sso.source-identifier=source2
sso.key-identifier=key2
sso.username-identifier=username2
sso.redirect-url-identifier=redirectUrl2

则单点链接格式变为:http://localhost:8080/my-sso?source2=xxx&key2=xxx&username2=xxx&redirectUrl2=xxx


到此,sso服务端配置完成,可以访问:http://localhost:8080/easy-sso测试是否配置开启成功(弹出提示: source参数为空! 则配置成功)