概要描述
在guardian组件的使用过程中,经常遇到federation server中关于Oauth2相关的问题,如开关安全的时候Oauth2 client 注册失败;点击各个组件link跳转失败等错误。本文章就TDH平台中Federation server中的Oauth2鉴权功能做一段阐述。
详细说明
-
如上图中所示,TDH集群在开启的时候,各个组件会生成各自的Oauth2 client到federation server端注册;
-
注册请求到达federation server后,会默认往federation默认的TDH租户中注册各个组件的信息。ps:环境若改过realm,以实际环境中的值为准。
在理解上述流程的基础上,分析一下下面的两个案例。
案例分析
案例1 :点击各组件角色的link,跳转失败,报错Whitelabel Error Page
客户点击Yarn组件的server角色中的link,想跳转至Yarn server的GUI端,但是跳转至如下错误页面;
-
分析:
从图中错误直观的看到未找到指定客户端,同时结合federation的日志也可以佐证,这一报错是由于开启安全时注册Oauth2 client异常导致
根据以上的分析,去federation server页面去检查,发现并没有对应的TDH租户下的各个组件的client注册成功的记录。
这个时候可以试着重新开关一下安全,确认一下Oauth2 client注册是否可以成功。
开关安全过程中发现如下报错:对TDH下组件的Oauth2 client进行注册/去注册时报Unauthorized的错
对于该错误则需要对federation server端的TDH租户检查是否正常。
本次案例中检查TDH租户相关信息后发现,客户将原本的默认的TDH租户删除了,自己新建了一个tdh用,导致了开启安全时注册Oauth2 client失败。 -
解决方案:
对于这种客户操作不规范导致的错误,在客户允许的情况下删除guardian组件重新安装后解决;
由于很难有客户会这么操作环境,除重新安装外,没有摸索出其他的解决修复方案。
案例2:注册 OAuth2 Client失败
-
场景:
集群在开启安全的过程中,某个服务卡在最后一步“ 注册 OAuth2 Client”
-
分析:
根据第一部分章节的阐述,每个组件开启安全的时候都会去federation端去注册client信息,但是每个组件的client注册信息只能有一个,所以这种场景下大部分是因为federation端TDH租户下已经存在了该组件的client的信息,这种情况下只需要在federation端删除相关组件的client信息即可。 -
解决方案:
-
登录 Guardian Federation Service
进入Guardian页面
进入任意一个 Guardian Federation Service 页面
- 找到有问题服务的OAuth2 Client用户信息并删除
进入TDH租户
删除相关组件的OAuth2 client的信息
- 找到有问题服务的OAuth2 Client用户信息并删除
-
去启动页面点击重试,即可成功