集成OAuth2单点登录功能
集成OAuth2单点登录功能
后端框架已实现与OAuth2单点登录系统对接使用,后端同时支持普通登录和OAuth2单点登录。可以通过参数配置切换前端系统使用哪种登录方式。
开发框架系统对接OAuth2单点登录系统的时序图如下所示:
1.OAuth2单点登录处理流程
前端页面处理流程步骤为:
图上的1,3,6,12红色字体的流程步骤。
前端需要代码来处理。
后端服务处理流程步骤:
图上2,7,10,11蓝色字体的流程步骤。
后端框架已实现代码功能,使用时只需要配置参数就行,见后续说明。
OAuth2处理流程步骤:
图上4,5,8,9紫色字体的流程步骤。单点登录系统自己处理。
2.使用后端框架的单点登录集成功能
2.1.系统参数表添加单点登录配置参数:
1
insert into "UTILITY_SYSTEM_CONFIG" ("ID","NAME","VALUE","CREATE_USER","CREATE_TIME","UPDATE_USER","UPDATE_TIME","DEFAULT_VALUE") values ('ssoLoginParam', 'ssoLogin', 'enable', 'operator', null, 'operator', null, 'disable');
字段名 | 字段值 |
---|---|
VALUE |
enable:启用单点登录disable:禁止单点登录 |
当启用单点登录时,所有401返回值如下所示:
1
{"code": 401,"message": "未授权访问","data": {"loginURL": "xxx"}}
loginURL值为单点登录URL,例如:http://xxx:xxx/services/authorization/oauth/authorize?client_id=appmarket&response_type=code&redirect_uri=http://xxx:xxx/home
当前端页面发现401返回data中的loginURL不为空时,需要重定向到loginURL指向的页面。
2.2.后端配置单点登录相关参数
单点登录相关参数配置在security-xxx.properties文件中,示例如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#-------------------sso-oauth2参数配置-----------------------------------
#basic:普通账号密码登录方式;sso-cas:单点登录CAS集成方式;sso-oauth2:单点登录oauth2集成方式
base.security.config.mode=sso-oauth2
#401无权限访问后返回的登录页面地址,现为OAuth2登录页面URL
base.security.login.url=http://{ssoUrl}/oauth/authorize?client_id={clientId}&response_type=code&redirect_uri=http://{frontendUrl}
#oauth2认证服务的URL
base.security.sso.oauth2.authorization.url=http://{ssoUrl}/oauth/token
#oauth2认证服务的注册client的id
base.security.sso.oauth2.authorization.client_id={clientId}
#oauth2认证服务的注册client的密码
base.security.sso.oauth2.authorization.client_secret={clientSecret}
#oauth2认证服务的认证方式
base.security.sso.oauth2.authorization.grant_type=authorization_code
#oauth2认证服务登录成功后跳转到的前端页面URL
base.security.sso.oauth2.authorization.redirect_uri=http://{frontendUrl}
#oauth2资源服务获取登录用户信息的URL
base.security.sso.oauth2.resource.userinfoUrl=http://{ssoResourceUrl}/services/resource/user/getUserInfo
logging.level.com.framework.backend.security.controller.SsoController=debug
3.单点登出功能
-
前端页面直接重定向到单点登出URL:
- http://{ssoUrl}/services/authorization/oauth/logout
-
同时要在单点登录系统里面配置第三方系统登出的回调URL:
- http://{backendUrl}/services/sso/ssoOauth2Logout(框架本身已实现)
4.后端开发框架处理
后端开发框架了已经放开了/sso/ssoLogin和/sso/ssoOauth2Logout方法的登录验证,不需要登录系统就可以直接调用这两个方法。
本文由作者按照
CC BY 4.0
进行授权