前后端分离项目集成CAS实现单点登录

本文介绍jbone项目中前后端分离架构中如何集成的CAS

未进行前后端分离的MVC项目集成CAS非常简单,只需要集成jbone-cas-client再进行简单的配置就可以了。
而前端项目没办法像mvc项目那样在后端保存session,只能通过token的方法来管理认证,这就和传统的MVC项目的处理方式完全不同了。
jbone在进行前后端分离的架构改造过程中,其中的一个难点就是集成CAS登录认证服务。好在CAS提供了OAuth协议的支持,经过一系列的方案论证,最终前端项目集成CAS的方案选用了OAuth协议的授权码方式。

实现步骤

CAS添加OAuth的支持

<dependency>
<groupId>org.apereo.cas</groupId>
<artifactId>cas-server-support-oauth-webflow</artifactId>
<version>${cas.version}</version>
</dependency>

配置CAS的OAuth授权服务

{
"@class" : "org.apereo.cas.support.oauth.services.OAuthRegisteredService",
"clientId" : "cmsadmin",
"clientSecret" : "cmsadmin",
"id" : 50002,
"serviceId" : "^http://jbone-cms-admin.majunwei.com.*",
"name" : "Jbone内容管理系统",
"description" : "Jbone内容管理系统",
"generateRefreshToken": false,
"bypassApprovalPrompt": true,
"supportedGrantTypes": [ "java.util.HashSet", [ "authorization_code", "password","refresh_token","client_credentials" ] ],
"supportedResponseTypes": [ "java.util.HashSet", [ "code", "token","device_code" ] ]
}

配置CAS前端单点登出

cas.logout.removeDescendantTickets: true

前端项目的改造

代码太多,参见https://github.com/417511458/jbone/blob/master/jbone-cms/jbone-cms-admin中的实现,主要是src/libs/auth.js
效果视频:交流群共享文件中

实现原理

前端单点登录流程图


前端单点登录序列图

详情参见项目源码:https://github.com/417511458/jbone
原创文章,转载请注明出处:jbone - 前后端分离项目集成CAS实现单点登录

共0条评论

请先登录,再发言!