【问题标题】:MSAL: Acquire token silently in angularMSAL:以角度静默获取令牌
【发布时间】:2023-03-10 18:43:01
【问题描述】:
我需要默默地获取令牌。当当前令牌到期时间还剩 2 分钟时,我调用了 renewToken 函数,msalService.acquireTokenSilent 使用我得到了令牌,但这个令牌是当前令牌而不是新令牌。我正在使用 msal v1。我不知道我的错误在哪里
renewToken(){
const renewIdTokenRequest = {
scopes: [CLIENTID]
};
this.msalService.acquireTokenSilent(renewIdTokenRequest).then(re=>{
console.log('response',re)
})
}
【问题讨论】:
标签:
angular
typescript
msal
【解决方案1】:
From this link,听起来你只有在当前的过期时才能获得新的。
令牌更新
PublicClientApplication 对象公开了一个名为 acquireTokenSilent 的 API,旨在静默检索未过期的令牌。它通过几个步骤完成:
-
检查令牌缓存中是否已存在给定范围、客户端 ID、权限和/或 homeAccountIdentifier 的令牌。
-
如果给定参数存在令牌,则确保我们得到一个匹配项并检查过期时间。
-
如果访问令牌未过期,MSAL 将返回包含相关令牌的响应。
-
如果访问令牌已过期但刷新令牌仍然有效,MSAL 将使用给定的刷新令牌检索一组新令牌,然后返回响应。
-
如果刷新令牌已过期,MSAL 将尝试使用隐藏的 iframe 静默检索访问令牌。这将使用帐户声明对象中的 sid 或用户名来检索有关用户会话的提示。