如何将JWT令牌发送到zendesk进行身份验证?

时间:2018-10-11 22:23:04

标签: jwt zendesk zendesk-api zendesk-app

我有ASP.NET MVC应用程序,正在尝试将zendesk产品(联系表格和帮助中心)集成到该应用程序中。帮助中心和文章受到限制,因此我的客户端应用程序需要将Jwt令牌发送到zendesk进行身份验证。根据准则,客户端应用程序需要使用共享秘密(在zendesk中创建)创建Jwt令牌,然后在每次页面加载时将令牌设置为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包来创建令牌?

0 个答案:

没有答案
相关问题