2

我在实现 API 以授权用户并进行会话和启动课程时遇到问题。

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

现在的问题是,当我尝试打开课程链接时,尽管登陆课程,它仍会将我重定向到登录页面。您能否帮助建立一个会话并让我知道要使用哪个 API 来进行会话,这样它就不会将我重定向到登录页面。

4

1 回答 1

3

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

你需要的东西:

  • 用户名。
  • 令牌哈希的SSO 密码

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


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

基本思想是这样的:

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

  • 用户名(小写!!!)
  • 时间= UTC 中自 Unix 纪元以来的秒数。
  • SSO 密码(您自己输入的密码)。

2)获取哈希的十六进制值。

3) 将目标 url 与用户名、时间和十六进制结合起来。像这样:

http[s]://[yourdomain]/lms/index.php?r=site/sso&login_user=[username]&time=[utc time]&token=[token]{&id_course=[id_course]}{&destination=[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;    
    }

因此,我遵循了这个 无法找到的文档,它使我看到了您在上面看到的内容(我找不到网址,所以我只是分享了它)。

于 2015-07-10T15:48:42.413 回答