Как отправить токен JWT в zendesk для аутентификации? - PullRequest
0 голосов
/ 12 октября 2018

У меня есть приложение ASP.NET MVC, и я пытаюсь интегрировать продукт zendesk (контактную форму и справочный центр) в приложение.Справочный центр и статьи ограничены, поэтому моему клиентскому приложению необходимо отправить токен Jwt в zendesk для аутентификации.Согласно рекомендациям, клиентское приложение должно создать токен Jwt, используя общий секрет (созданный в zendesk), а затем установить токен в window.zESettings объект при каждой загрузке страницы.Итак, я делаю что-то вроде ниже на _layout.cshtml странице

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>My ASP.NET Application</title>
    @Styles.Render("~/Content/css")
   <script type="text/javascript"> 
        window.zESettings = {
            authenticate: { jwt: 'MY JWT TOKEN' }
        };
    </script>
 <script id="ze-snippet" src="https://static.zdassets.com/ekr/snippet.js?key=somekey"></script>
</head>

На стороне сервера у меня есть код для создания токена JWT с использованием JWT пакета

   public class JwtTokenHelper
   {
     private const string SHARED_KEY = "SOME SECRET KEY CREATED IN ZEN DESK";        

    public static string CreateToken()
    {
        TimeSpan t = (DateTime.UtcNow - new DateTime(1970, 1, 1));
        int timestamp = (int)t.TotalSeconds;

        var payload = new Dictionary<string, object>() {
            { "iat", timestamp },
            { "jti", System.Guid.NewGuid().ToString() },
            { "name", "foo bar" },
            { "email", "test@mydomain.com" }
        };


        IJwtAlgorithm algorithm = new HMACSHA256Algorithm();
        IJsonSerializer serializer = new JsonNetSerializer();
        IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();
        IJwtEncoder encoder = new JwtEncoder(algorithm, serializer, urlEncoder);
        var token = encoder.Encode(payload, SHARED_KEY);
        return token;
    }      
}

Вопросы
1> Как получить токен, созданный на сервере и настроенный на window.zESettings?
2> Есть ли способ создать токен, используя вместо этого System.IdentityModel.Tokens.Jwtиспользовать JWT пакет?

...