669
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