阅读669 返回首页    go Udesk智能客服系统


单点登录设置

单点登录场景:

单点登录(Single sign-on,SSO)是一种访问控制,在多个软件应用中,用户只需登录其中一个应用,就可以成功访问其他应用;同样,用户只需注销其中一个应用,就可以成功注销其他应用。

譬如,某企业建设了OA系统和客服系统,同时做了单点登录控制。某员工登录了OA系统的时,其实也同时登录了客服系统,这样可以减少用户多次登录的麻烦。

 

单点登录接入步骤:

1、登录Udesk后台

用管理员身份登录Udesk后台,进入”管理中心-管理中心-单点登录“,在”远程登录URL“、”远程退出URL“中分别填写企业自己的登录和退出URL。

这个地址的作用是当用户通过Udesk域名进行登录时,页面会自动跳转至企业做了单点登录控制的远程登录URL上,即在此处配置的“远程登录URL”链接。

当用户在此登录页中输入用户名和密码后,登录后台根据sso协议调用Udesk的jwt响应地址,当Udesk服务器认证通过后,根据提交的参数判断:

  • 如果在客服管理中找到客服账号,即可登录Udesk客服系统 ,
  • 如果找到客户账号,即以客户的身份登录Udesk,
  • 如果没有找到客户账号,则创建新的客户并以客户身份登录。

当用户退出Udesk时,会同时退出其它应用,同时界面跳转至系统配置的“远程退出URL”页面上。

2、开发者代码添加

配置好远程登录和登出的URL后,需要开发者按SSO协议添加代码 :

• jwt请求地址:即远程登陆URL,第三方站点的登陆页面。该选项由管理中心 -> 单点登陆
设置
• jwt响应地址及参数
1、地址: https://{yourdomain}.udesk.cn/users/auth/jwt/callback
2、请求方法:get
3、请求参数
参数名:jwt
参数类型:string
参数值:由jwt协议编码
• jwt协议编码值所需的相关信息。使用的对称加密协议为HS256,被加密的json数据如下:
{
name: "nickname", //用户名称
email: "xxx@qq.com", //用户邮箱
iat: 1451890858 //登录时间,时间为"格林整数"
}

 

对称加密的demo

Ruby Demo:

    secret = sso_setting.shared_secret
    claims = {}
    claims[:name]  = "Dude"
    claims[:email] = customer_email
    claims[:iat]   = Time.now.to_i
    payload = JWT.encode(claims, secret)
    url     = "https://#{host_name}/users/auth/jwt/callback?jwt=#{payload}"

 

PHP的jwt lib在这里https://github.com/firebase/php-jwt,使用方式类似:

php-jwt/src/JWT.php

public static function encode($payload, $key, $alg = 'HS256', $keyId = null, $head = null)
{
$header = array('typ' => 'JWT', 'alg' => $alg);
if ($keyId !== null) {
$header['kid'] = $keyId;
}
if ( isset($head) && is_array($head) ) {
$header = array_merge($head, $header);
}
$segments = array();
$segments[] = JWT::urlsafeB64Encode(JWT::jsonEncode($header));
$segments[] = JWT::urlsafeB64Encode(JWT::jsonEncode($payload));
$signing_input = implode('.', $segments);
$signature = JWT::sign($signing_input, $key, $alg);
$segments[] = JWT::urlsafeB64Encode($signature);
return implode('.', $segments);
}

php自行实现这个encode函数即可。

 

最后更新:2017-01-17 10:01:40

  上一篇:go 移动端有帮助中心吗?
  下一篇:go 如何使用工单过滤器来分类管理工单