单点登录-OAuth 2.0
1. OAuth 2.0 概述
OAuth 是一种单点登录的协议,通过配置即可实现观远数据与OAuth 认证服务提供方之间的认证授权,用户可通过已采购或自有搭建的统一账户登录平台登录观远数据。
2. OAuth 2.0 标准化配置步骤
2.1 准备工作
(1) 确认使用的统一认证服务是否提供为标准OAuth2协议,如果不是则可能需要定制化开发。
(2) 确认观远数据平台OAuth的认证回调地址 (认证服务器配置应用时需要此信息)
${BI 服务地址}/standard-oauth2/authenticate
(3) 认证服务器提供以下信息
- 认证服务器地址:认证服务提供方地址,一般供用户输入帐密/扫码的页面(获取Code)
如:http://xxx.guandata.com/auth/realms/guandata/protocol/openid-connect/auth
- AccessToken获取地址:向认证服务提供方请求Token的URL(使用Code换取Token)
如:http://xxx.guandata.com/auth/realms/guandata/protocol/openid-connect/token
- 用户信息获取地址:向认证服务提供请求用户信息的URL(使用Token换取用户信息)
如:http://xxx.guandata.com/auth/realms/guandata/protocol/openid-connect/userinfo
-
登出地址(可选):将当前用户从SSO登出的地址
-
ClientID: 认证方客户端ID
-
ClientSecret: 认证方客户端密码
-
BindKey:返回的用户信息中用来和BI用户匹配的字段,如email
(3) 确保BI服务器与SSO认证服务器网络联通。
2.2 修改配置
(1)进入管理中心-系统集成-SSO页面,选择单点登录方式为:OAuth
(2)编辑OAuth配置
-
认证协议(Protocol):OAuth 2.0
-
ClientId: 认证方客户端Id
-
ClientSecret: 认证方客户端密码
-
身份认证地址(AuthorizationURL):认证服务提供方地址,一般为供用户输入帐密/扫码的页面地址
-
回调地址(选填,取决于认证服务接口是否需要redirect_uri参数): ${BI 服务地址}/standard-oauth2/authenticate
- AccessToken获取地址(AccessTokenURL):向认证服务提供方请求Token的URL(使用Code换取Token)Token支持在请求Header中传输
-
获取用户信息地址(ApiURL):向认证服务提供方请求用户信息的url(使用token换取用户信息)。token可以以${accessToken}格式在地址url或header或Post body中传入。
-
其中,token支持三种传参方式:
-
方式一:支持在地址url中传参,如Get:https://www.xx.com/auth/userinfo?token=${accessToken};
-
方式二:支持在请求Header中传参,需在参数值中包含${accessToken},如:
-
方式三:支持在请求Post body中传参,需JSON行中包含${accessToken},如:
- 用户信息字段(UserIDKey):用户信息中用来和BI用户映射的字段,如email
(3)默认登录地址和登录重定向(可选)
-
默认登录地址为:${BI服务地址}/standard-oauth2/authenticate
-
如果您提供了登出URL,则打开登出重定向开关,并将地址配置为您提供的LogoutURL(一般需要配置为单点登出地址)
如果用户信息字段的值与已经创建的用户账号不一致,需要在BI中配置隐射关系表。
3. 测试流程
- 访问${BI服务地址}/standard-oauth2/authenticate,自动跳转到SSO登录认证页面 ,如Keycloak:
-
输入正确的帐密后,跳转回BI,并确认登录用户为SSO表中绑定的SSO用户
-
如果配置了登出地址,在BI中选择登出,会在SSO中登出且回到SSO登录页面