尝试使用node-adal库并且几乎没有问题。
答案 0 :(得分:0)
据我所知,ADAL库中没有这样的方法来检查令牌是否过期。但是它提供了类似的函数_refreshEntryIfNecessary
来检查和刷新令牌。您还可以解码base64编码的令牌并提取exp
声明并与日期时间进行比较。
到期时间表示为 NumericDate :
一个JSON数值,表示从1970-01-01T00:00:00Z UTC到指定的UTC日期/时间的秒数,忽略闰秒。这相当于IEEE Std 1003.1,2013 Edition [POSIX.1]定义“Seconds Since the Epoch”,其中每天仅计算86400秒,除了可以表示非整数值。有关一般日期/时间和特别是UTC的详细信息,请参阅RFC 3339 [RFC3339]。
以下是使用jsonwebtoken
供您参考的代码:
function isTokenExpired(token) {
var decoded = jwt.decode(token);
var isExpired = decoded.exp - Math.floor(Date.now() / 1000) < 0
return isExpired;
}
console.log(isTokenExpired(token));
目前我正在将令牌保存到azure存储中,有没有办法将它卸载到库中并让它处理将令牌持久保存到表中?
真正的问题阻碍了你什么?根据我的理解,业务逻辑由我们自己实现。
adal库的C#版本具有AcquireTokenSilentAsync(String,ClientAssertion,UserIdentifier)方法,该方法接收UserIdentifier。是否存在节点版本的等效项?
有几种方法可以静默获取令牌。例如,我们可以从缓存中获取令牌,如果它已过期则刷新它。我们还可以使用客户端凭据流和资源所有者密码凭据授予流来获取令牌。但是,NodeJ的ADA1没有提供相应的方法。您可以在GitHub上的Windows Azure Active Directory Authentication Library (ADAL) for Node.js提交想法。