我有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包来创建令牌?