我正面臨着實現API來授權用戶並進行會話並啓動課程的問題。Docebo Api集成
所有喜歡做一個記號,並用REST API傳遞給它的全部步驟已經完成,在響應我收到的響應令牌成功。
現在的問題是,當我試圖打開一個課程鏈接,它重定向我到登錄頁面,儘管登陸過程。你能幫助建立一個會話,並讓我知道哪個API將用於創建一個會話,以便它不會將我重定向到登錄頁面。
我正面臨着實現API來授權用戶並進行會話並啓動課程的問題。Docebo Api集成
所有喜歡做一個記號,並用REST API傳遞給它的全部步驟已經完成,在響應我收到的響應令牌成功。
現在的問題是,當我試圖打開一個課程鏈接,它重定向我到登錄頁面,儘管登陸過程。你能幫助建立一個會話,並讓我知道哪個API將用於創建一個會話,以便它不會將我重定向到登錄頁面。
對於那些仍然在尋找一個答案,我會告訴你如何生成一個臨時鏈接,將授權用戶,並引導他們在Docebo所需的位置。
你需要的東西:
的SSO祕密的令牌哈希值。
-In Docebo:點擊應用和功能的左側。點擊第三方集成。激活API和SSO(如果尚未激活)。在API和SSO處於活動狀態後,單擊其齒輪圖標。單擊以「使用...啓用SSO」開頭的複選框。在複選框下方的框中輸入SSO密碼。保存。
現在,對於實施。我自己使用了C#,但希望它可以輕鬆地翻譯成您選擇的語言(或缺少選擇)。
的基本思想是:
1)創建三個值的MD5哈希: (注意:生成哈希時包含的值之間逗號實施例下面進一步...)
2)獲取散列的十六進制值。
3)將目標網址與用戶名,時間和十六進制組合起來。像這樣:
HTTP [S]:// [YOURDOMAIN] /lms/index.php?r=site/sso & login_user = [用戶名] &時間= [UTC 時間] &令牌= [令牌] {& id_course = [id_course]} {& destination = [目的地]}
對於我的例子,我沒有指定課程或目的地。
這裏是上面的胡言亂語,在C#:
public string GenerateDoceboSSOLink()
{
string userName = "johnsmith"; //Note the lowercase!!
string domain = "http://my-test.docebosaas.com";
string ssoSecret = "MySSOSecret";
//Getting the seconds since the Unix Epoch
TimeSpan t = (DateTime.UtcNow - new DateTime(1970, 1, 1));
int time = (int)t.TotalSeconds;
//Creating the hash...
MD5 md5 = System.Security.Cryptography.MD5.Create();
//Note the inclusion of the commas!
string input = userName + "," + time + "," + ssoSecret;
byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(input);
byte[] hash = md5.ComputeHash(inputBytes);
//Getting the hex value of the hash.
StringBuilder sb = new StringBuilder();
for (int i = 0; i < hash.Length; i++)
{
sb.Append(hash[i].ToString("X2"));
}
string token = sb.ToString(); //the hex value, which we will call token
//The sso link.
string link = String.Format("{0}/lms/index.php?r=site/sso&login_user={1}&time={2}&token={3}", domain, userName, time, token);
return link;
}
於是,我跟着this 不可能找到的文件,導致我給你看看上面有什麼(我無法找到的網址,所以我只是分享它)。
我們可以看到一些相關的代碼嗎?我們很難設想你的實施。 – afuzzyllama
謝謝。將盡快添加代碼 –