客服云单点登录
概述
单点登录功能允许为租户设置指向第三方系统的登录URL,坐席使用该第三方系统的账号登录后,可以直接进入客服系统。常见的有如下2种业务场景:
- 场景1(最常见):坐席人员在第三方客户现有的业务系统页面登录后,通过点击页面上的某个图标/链接,直接跳转至在线客服系统首页页面,单点过程无需坐席再输入任何信息;
- 场景2:用户直接在浏览器输入并打开在线客服系统三级域名地址https://xxx.kefu.sh.absoloop.com,页面会自动跳转到单点登录配置的认证指向第三方系统页面,用户输入第三方系统认证信息后,第三方业务系统会重定向到客服系统认证接口,并将访客身份加密信息回传给客服,实现客服系统登录;整个过程中坐席无需输入客服系统的登录信息;
单点登录功能为旗舰版功能,如有需要请联系环信商务人员。
注意事项
- 只有拥有独立三级域名(例如:example.sh.absoloop.com)的租户才可以使用单点登录功能,环信会为您提供独立三级域名;公有云的无独立的三级域名的租户(kefu.sh.absoloop.com)则无法使用,如有需要请联系商务。
- 配置完单点登录后,客服系统仍可通过访问通用的域名,且输入坐席的账号密码以实现登录(本方式一般是供第三方没有对应的超管用户,供客服系统的超管通过此方式登录)
设置单点登录
完成第三方平台登录页面的开发后,先使用通用的客服系统域名登录客服系统(http://kefu.sh.absoloop.com),并进入“管理员模式 > 设置 > 单点登录”页面,设置远程登录地址、生成共享密钥,并开启单点登录功能。
时序图
下图为通过JWT的第三方单点登录(SSO)时序图。
注:此处以三级域名为“lcx.sh.absoloop.com”为例。
第三方平台开发
开发一个登陆页面,使用第三方自己的用户体系登录,比如:
http://young-dawn-82093.herokuapp.com/chenxing/sso
在第三方登录成功之后,使用约定好的jwt secret对email、name、state进行签名,生成的jwt有2分钟有效期。
email 必填 邮箱地址,当做环信用户名
name 必填 为昵称用于创建用户的时候使用
state 必填 为登录状态Online、Hidden
externalId 选填 如果第三方系统的邮箱不是用户名而是可以随时改变的一个资料信息,那么在这里填写真正登录使用的用户名
JWT_SECRET 必填 为“管理员模式 > 设置 > 单点登录”页面的“共享密钥”
String jwt = JWT.create()
.withIssuedAt(new Date())
.withJWTId(UUID.randomUUID().toString())
.withClaim("email", email)
.withClaim("name", "昵称")
.withClaim("externalId", "如果第三方用户名不为email,这里填写用户名")
.withClaim("state", "Online")
.sign(Algorithm.HMAC256(JWT_SECRET));
生成好jwt之后,需要redirect回环信的地址:
http://lcx.sh.absoloop.com/v1/access/jwt?jwt={jwt}&returnTo={return_to}
参数说明:
- jwt: 上述根据email、name、state进行签名后生成的jwt
- returnTo: 可以使用跳转到第三方平台时url地址携带的returnTo地址
客服云系统根据jwt进行验证之后,会自动进行登录,并且跳转到return_to的地址。