SpringBoot实现单点登录SOS

单点登录(Single Sign On),简称为SSO,是比较流行的企业业务整合的解决方案之一。 SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

SOSExample 是使用SpringBoot框架实现的一个单点登录简单demo,主要为功能即在某个子系统登录或者退出登录后,在其余的子系统中也表现出相同的状态。

项目思路

本项目包含两个模块,一个是负责统一登录认证的模块,另一个即正常业务模块。业务模块使用多个不同端口启动来模仿多个子系统。某个子系统登录时,将相应的登录信息发送给业务服务器,业务服务器再将信息传给统一认证服务器,成功之后,返回浏览器,同时浏览器也会使用Ajax发送异步请求,向其余的子系统发送相应信息(可以不包括密码),然后其余子系统返回结果中包含Set-Cookie(这里可以只返回个用户名),浏览器收到后会在其余子系统中添加相应的Cookie。有了Cookie,事情就应该好办了。后面详细的可以参考代码。

关键源码

业务服务器中的登录接口,主要负责接收浏览器登录信息,然后交给认证服务器去认证,登录成功则在当前Session中标记一下

    @PostMapping("/login")
    public String login(String username, String password,
                        HttpServletRequest request, Model model) throws IOException {
   
        String url = String.format("http://localhost:9090/login?username=%s&password=%s", username, password);
        String responseContent = HttpUtils.getResponseContent(url);
        System.out.println("login:" + responseContent);
        if("1".equals(responseContent)){
   
            request.getSession().setAttribute("user", username);
            return "redirect:home";
        }
        model.
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值