GAF 认证对接介绍
前几篇文章对GAF的各个模块功能进行详细介绍,并通过管网示例, 实践了扩展开发流程。接下来重点介绍GAF的认证体系,以及如何与其他系统相互之间对接认证,解决系统之间的如何共享用户体系、单点登录问题。
认证模块介绍
使用的技术
在认证微服务模块(gaf-authentication
), 使用spring-security
+oauth2.0
,提供认证、oauth2、token、用户相关的接口。相关接口可查看API文档
在网关模块,使用spring-cloud-gateway
+一系列自定义过滤器
,在网关处进行统一认证。网关调用认证微服务的接口进行认证校验,并获取用户信息,传递给下游微服务,以便下游微服务使用。
认证方式
1. 通过用户名密码登录,后续请求使用cookie
使用POST方式发送请求/api/authentication/login/username_password
到网关或者前端,进行登录。后端返回cookie,后续所有请求携带cookie,则可通过认证校验,并获取到用户信息。
2.通过用户名密码获取jwt token, 后续请求使用jwt token
使用POST方式发送请求/api/authentication/token
到网关或者前端,从返回内容中的data.access_token
字段获取jwt。后续所有请求增加请求头Authorization Bearer ${获取的jwt}
,则可通过认证校验,并获取到用户信息。
这种方式,适用于其他系统调用GAF系统的接口。
第三方登录
认证组件(gaf-authentication)中,提供了第三方登录配置,支持OpenId和OAuth2协议。
配置说明
yaml格式
login:
enable-third-party: false #是否开启第三方登录
third-party-login-model: mutiple # 第三方登录模式 single (表示只有一种第三方登录) 或者 mutiple (第三方登录可以存在多种)
third-party-name: oidc:keycloak # 第三方登录名 由下面third-party信息构成 例如oidc:keycloak或者oauth2:github
third-party:
oidc:
keycloak:
order: 1 # 排序序号
iconUrl: https://www.keycloak.org/resources/favicon.ico # 图标地址
provider:
authorizationUri: http://xxx:xx/auth/realms/master/protocol/openid-connect/auth
tokenUri: http://xxx:xx/auth/realms/master/protocol/openid-connect/token # 获取token的接口
userInfoUri: http