Docebo Api集成

时间:2013-10-31 03:36:42

标签: api authentication

我遇到了实施API以授权用户并进行会话和启动课程的问题。

所有完整的步骤,例如制作令牌并使用REST API传递它已经完成,并且在响应中我收到了响应令牌中的成功。

现在的问题是,当我尝试打开课程链接时,它会重定向到登录页面,尽管登陆课程。你能帮忙设置一个会话,让我知道用于创建会话的API,以便它不会将我重定向到登录页面。

1 个答案:

答案 0 :(得分:2)

对于那些仍在寻找答案的人,我将向您展示如何生成一个临时链接,该链接将授权用户并将其指向Docebo中的所需位置。

您需要的东西:

  • 用户名
  • 令牌哈希的 SSO秘密

    - 在Docebo:点击左侧的APPS和功能。单击第三方集成。激活API和SSO(如果尚未激活)。 API和SSO激活后,单击其齿轮图标。单击以“启用SSO with ...”开头的复选框。在复选框下方的框中输入SSO密码。保存。


现在,为了实施。我自己使用C#,但希望它可以很容易地翻译成您选择的语言(或缺乏选择)。

基本理念是:

1)创建三个值的MD5哈希值: (注意:生成哈希时在值之间包含逗号。下面的示例...)

  • 用户名(小写!!!)
  • 时间 =自Unix上的Unix纪元以来的秒数。
  • SSO秘密(您自己键入的那个)。

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 不可能找到导致我上面看到的文档(我找不到网址,所以我只是分享了它)。