问题描述
我需要存储一个 JWT 令牌,以便在 BizTalk Server 2013 R2 中同一编排的多个实例中使用它。
如何在每个实例中存储和调用它?本地存储?注册表键?其他地方?
解决方法
您需要做的是拥有一个静态类的令牌管理器类。一旦实例化,它可以将您的 JWT 令牌保留在它的私有变量中,并且只要您不重新启动主机实例,它就会一直存在。您还需要保留上次获取令牌的时间,并在过期时获取新的令牌。
下面是它的样子的模拟示例。
public static class TokenManager
{
private static DateTime _sessionLastRefreshDate = DateTime.Now;
private static string _JWTToken = string.Empty;
public static string GetSession(...)
{
//get current date time
DateTime now = DateTime.Now;
//get the difference from the last time the token was fetched
TimeSpan diff = now.Subtract(_sessionLastAccessDate);
if (_sessionId == string.Empty || (diff.TotalMinutes >= *TokenTimeOut*)
{
// Fetch JWT Token here
_sessionId = *NewJWTToken*;
_sessionLastRefreshDate = DateTime.Now;
}
//give the session ID to the caller
return _sessionId;
}
}