跳转到内容

单点登录

单点登录,就是使用企业服务平台的《授权码模式》或者《授权码模式(PKCE)》,详细请参考相关文档,大体步骤如下:

1、申请client_id,client_secret,并配置client_name和redirect_uri

Section titled “1、申请client_id,client_secret,并配置client_name和redirect_uri”

redirect_uri是回调地址,比如:https://oa.xkw.cn/login/oauth2/code/messaging-client-oidc

不需要配置参数,参数可以根据各个应用的需求进行增加,比如要回调到前端的页面,自行增加参数,比如https://oa.xkw.cn/login/oauth2/code/messaging-client-oidc?redirect_path=/xxx/xxx

注意:如果redirect_path是一个url,需要进行urlencoding处理。

2、构造企业服务平台的获取授权码链接,进行跳转

Section titled “2、构造企业服务平台的获取授权码链接,进行跳转”

参考《授权码模式》或者《授权码模式(PKCE)》。

注意:要记录下跳转链接中redirect_uri的值,这个是当前的应用回调,是在企业服务平台配置的redirect_uri,可能完全一样,可能由于业务需要,增加了不同的参数,这个值要记录下来,在下一步的接口回调中,使用code获取access_token,id_token时,需要再次作为参数进行提交验证,可以存储在当前的session中,也可以存储在其他缓存中。

上一步跳转企业服务平台,企业服务平台处理完后,会跳转应用系统,并在回调地址中增加code和state参数,应用系统需要使用code获取access_token,id_token,参考《授权码模式》或者《授权码模式(PKCE)》。

注意:

返回的access_token和id_token都是jwt,都可以从中解析出用户id,就是jwt的payload中的sub值,解析出来算登录成功了,后面的逻辑就跟普通登录一样,比如:

  • 将当前登录人信息存储在会话中;
  • 或者生成应用系统自己的token,返回给前端,用于前端后续的接口请求;
  • 或者将企业服务平台返回的access_token返回给前端,用于前端后续的接口请求,如果使用这种方式,那还需要对接《公钥获取和验签》,企业服务平台的access_token可以用于跨域请求其他接入企业服务平台的应用系统;