2

ユーザーを承認し、セッションを作成してコースを開始するための API の実装に関する問題に直面しています。

トークンを作成して REST API で渡すなどのすべての手順が完了し、応答トークンで成功を受け取りました。

問題は、コースのリンクを開こうとすると、コースに着地してもログインページにリダイレクトされることです。ログイン ページにリダイレクトされないように、セッションのセットアップを手伝ってください。また、セッションの作成に使用する API を教えてください。

4

1 に答える 1

3

まだ答えを探している人のために、ユーザーを承認して Docebo の目的の場所に誘導する一時的なリンクを生成する方法を紹介します。

必要なもの:

  • ユーザー名.
  • トークン ハッシュのSSO シークレット。

    -Docebo の場合: 左側の [アプリと機能] をクリックします。[サード パーティの統合] をクリックします。まだアクティブ化されていない場合は、API と SSO をアクティブ化します。API と SSO がアクティブになったら、歯車のアイコンをクリックします。「Enable SSO with...」で始まるチェックボックスをクリックします。チェックボックスの下のボックスに SSO シークレットを入力します。保存。


さて、実装です。私自身はこれに C# を使用しましたが、選択した言語 (または選択の欠如) に簡単に翻訳できることを願っています。

基本的な考え方は次のとおりです。

1) 3 つの値の MD5 ハッシュを作成します。

  • ユーザー名(小文字!!!)
  • time = utc での Unix エポックからの秒数。
  • SSO シークレット(自分で入力したもの)。

2) ハッシュの 16 進数値を取得します。

3) 宛先 URL をユーザー名、時刻、および 16 進数と組み合わせます。そのようです:

http[s]://[ドメイン名]/lms/index.php?r=site/sso&login_user=[ユーザー名]&time=[UTC時間]&token=[トークン]{&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;    
    }

だから、私はあなたが上に見たものに私を導いたこの見つけられないドキュメントをたどりまし た(私はURLを見つけることができなかったので、私はそれを共有しました).

于 2015-07-10T15:48:42.413 に答える