我遇到了实施API以授权用户并进行会话和启动课程的问题。
所有完整的步骤,例如制作令牌并使用REST API传递它已经完成,并且在响应中我收到了响应令牌中的成功。
现在的问题是,当我尝试打开课程链接时,它会重定向到登录页面,尽管登陆课程。你能帮忙设置一个会话,让我知道用于创建会话的API,以便它不会将我重定向到登录页面。
答案 0 :(得分:2)
对于那些仍在寻找答案的人,我将向您展示如何生成一个临时链接,该链接将授权用户并将其指向Docebo中的所需位置。
您需要的东西:
令牌哈希的 SSO秘密。
- 在Docebo:点击左侧的APPS和功能。单击第三方集成。激活API和SSO(如果尚未激活)。 API和SSO激活后,单击其齿轮图标。单击以“启用SSO with ...”开头的复选框。在复选框下方的框中输入SSO密码。保存。
现在,为了实施。我自己使用C#,但希望它可以很容易地翻译成您选择的语言(或缺乏选择)。
基本理念是:
1)创建三个值的MD5哈希值: (注意:生成哈希时在值之间包含逗号。下面的示例...)
2)获取哈希值的十六进制值。
3)将目标网址与用户名,时间和十六进制组合在一起。像这样:
的http [S]:// [YOURDOMAIN] /lms/index.php?r=site/sso&login_user= [用户名]&安培;时间= [UTC 时间]安培;令牌= [令牌] {&安培; id_course = [id_course]} {&安培;目的地= [目的地]}
对于我的例子,我没有指定课程或目的地。
以上是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 不可能找到导致我上面看到的文档(我找不到网址,所以我只是分享了它)。