node-adal toekn到期和缓存

时间:2016-10-31 21:40:33

标签: node.js adal

尝试使用node-adal库并且几乎没有问题。

  1. 我可以调用库中的函数来查看访问令牌是否已过期?我想在刷新之前检查当前访问令牌是否有效。
  2. 目前我正在将令牌保存到azure存储中,有没有办法将它卸载到库中并让它处理将令牌保存到表中?
  3. adal库的C#版本具有 AcquireTokenSilentAsync(String,ClientAssertion,UserIdentifier)方法,该方法接收UserIdentifier。是否存在节点版本的等效项?

1 个答案:

答案 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提交想法。