使用ExtJS应用程序进行ADAL.js令牌续订

时间:2017-10-04 09:25:30

标签: javascript azure extjs adal adal.js

我正在尝试将针对Azure AD的ADAL.js实现到我的ExtJS应用程序(SPA)中。这可以达到第一个令牌到期并应该更新的程度。

我做了一个小提琴:

https://fiddle.sencha.com/#view/editor&fiddle/27oc

重现的步骤:

  • 输入您的租户和应用ID。
  • 点击"登录"。登录弹出窗口打开。
  • 登录。您现在必须根据底部的灰色小错误消息在Azure门户中的应用中设置重定向Url。
  • 关闭弹出窗口。

  • 点击"登录"再次。登录弹出窗口再次打开。登录。

  • 点击"显示令牌"。
  • ,检查是否存在令牌
  • 要不必等待一个小时,请点击"使令牌无效(过期)"。
  • 然后,点击"续订令牌"从登录服务器获取新令牌。
  • 等待6秒,发现引发了以下错误:

      

    令牌更新操作因超时而失败

在网络标签中,我看到在令牌续订期间,对login.microsoftonline.com的调用转发到

https://fiddle.sencha.com/local/15071063979572828477/#id_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6IkhIQnlLVS0wRHFBcU1aaDZaRlBkMlZXYU90ZyIsImtpZCI6IkhIQnlLVS0wRHFBcU1aaDZaRlBkMlZXYU90ZyJ9.eyJhdWQiOiI2MmU4MjBhOS1mMTg0LTQ3ZjYtOGZhMS1kYjk0YmJmZDcxYTUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC8wOTI2NWMwNi1mYTM2LTRhN2EtOTBjZC1lM2MyYjBkZDFjMzkvIiwiaWF0IjoxNTA3MTA4NDE5LCJuYmYiOjE1MDcxMDg0MTksImV4cCI6MTUwNzExMjMxOSwiYWlvIjoiWTJWZ1lOZ3VlMVNEaDErY3MvajRVZDVNejRxUFd2ZmZwOWVjbkhKdk1udTcyb3RlYmdZQSIsImFtciI6WyJwd2QiXSwiZmFtaWx5X25hbWUiOiJVcmJhbiIsImdpdmVuX25hbWUiOiJBbGV4YW5kZXIiLCJpcGFkZHIiOiI4Ny4xMzguMTAwLjQ1IiwibmFtZSI6IkFsZXhhbmRlciBVcmJhbiIsIm5vbmNlIjoiODNjYzZhZWEtMmE0OC00Y2I5LWI0ODMtZDM2MjU3ODU3YmNlIiwib2lkIjoiMGU0MTExNjEtOTVmOS00ZWRlLTgwMDktYWIwYzA5M2NlNDU4Iiwic3ViIjoiaDdsYnhaZm5vdEIyYThGZnRxR2ROaXg0bDZ3RUNBV1FZdjlRTUdxVm5tOCIsInRpZCI6IjA5MjY1YzA2LWZhMzYtN...

表示令牌从服务器返回,但在客户端未正确处理。我错过了重要的东西吗?

1 个答案:

答案 0 :(得分:1)

由于几个不同的原因,可能会发生令牌续订的超时。这在ADAL.js FAQ中有记录。

查看提供的小提琴,在这种情况下出错的原因可能是handleWindowCallback未被调用。您可以在此sample中找到相关示例。