代码之家  ›  专栏  ›  技术社区  ›  LastTribunal

角度2 ADAL令牌刷新,用于隐式流(使用“ADAL-ANGLAR4”)

  •  2
  • LastTribunal  · 技术社区  · 7 年前

    似乎没有实用的方法来刷新隐式流中的令牌。

    我在用这个图书馆 https://github.com/benbaran/adal-angular4

    编辑:不要使用上述库,这是一个真正的POS

    3 回复  |  直到 7 年前
        1
  •  2
  •   angularconsulting.au    7 年前

    使用 implicit flow

    我正在使用 oidc-client-js (不是 adal js IdentityServer 我有一个象征性的生命,大约20分钟。因此,为了使客户端的身份验证持续20分钟以上,必须在某个时候请求新令牌。为此,我正在检查用户是否 idle 当他不在时,等等。根据逻辑,可以从 IdentityServer 使用 signinSilent automaticSilentRenew 事件。iframe在中实现时发生刷新 .

    更新:

    adal-angular4 source 你需要打电话 acquireToken 以更新令牌。根据文件:

    /**
    * Acquire token from cache if not expired and available. Acquires token from iframe if expired.
    * @param {string}   resource  ResourceUri identifying the target resource
    * @param {requestCallback} callback
    */
    acquireToken(resource: string, callback: (message: string, token: string) => any): void;
    

    你可以玩 acquireToken https://github.com/benbaran/adal-angular4-example this.service.acquireToken(...) 在里面 home.component.ts

        2
  •  1
  •   vibronet    7 年前

    在ADAL js和angular上更新令牌不需要显式执行任何操作。ADAL js自动拦截REST调用,如果必要的令牌不存在或即将到期,它将在后台主动更新令牌。它对你来说是透明的,但没有必要在单页应用中使用刷新令牌;代表与Azure AD会话的工件是在身份验证时发布的cookie。ADAL JS使用隐藏的iframe来驱动无用户体验的身份验证,该身份验证利用cookie的存在,通过隐式流从Azure AD获取新令牌。

        3
  •  1
  •   dave0688    7 年前

    用户使用AD进行身份验证,并获得一个生存期(在我的情况下为60分钟)的访问令牌。该令牌缓存在浏览器中。每次触发对后端的请求时,令牌都会从缓存中提取并发送到后端。

    然后,还有另一个参数叫做 expireOffsetSeconds (在Adal配置中的前端定义)。对我来说设置为600(=10分钟)。 这意味着,从第1分钟到第49分钟,它从缓存中获取令牌。然后在最后10分钟内,它向AD发出一个新请求,以续订令牌。