2017-05-04 56 views
0

在我的应用程序中,我通过ADAL的acquireTokenSilent()为一个资源获取了一个访问令牌,该资源成功了,然后我尝试为另一个资源获取访问令牌,并且说它未找到,因此我必须调用API来显式提示输入凭据。这是一个问题,因为用户必须使用相同凭证登录两次才能访问两个不同的资源。何时可以共享ADAL令牌? (iOS)

我对每个资源使用相同的权限。这是显示缓存中没有命中第二个资源的消息。

May 4 13:22:37 iPad MyApp [290]:ADAL 2.4.1 iOS 10.2.1 [2017-05-04 20:22:37 - XXXX]信息:没有找到任何项目的查询:(资源https://MYRESOURCE +客户端+权威https://login.windows.net/common

所以我的问题是,在什么情况下令牌将被跨资源共享,并且是否有任何特殊的允许(使用API​​的方法)允许这样做?

回答

1

如果你正在建设两个原生客户端(公众客户),并要横跨两个启用单点登录,一个选项是在应用程序之间共享的应用程序ID与从一个服务传递的实际令牌到另一个服务。

例如可以说你的公司名称是Contoso。您有日历移动应用程序和文档编辑器应用程序。

您可以创建一个单独的本地客户端应用程序:

  • 常见的应用程序的名称,如“Contoso的应用”
  • 重定向的URI两个应用
  • 所需权限这两个应用程序的总和

然后,当用户登录到任一应用程序时,他们将看到一个通用名称为“Contoso Apps”的登录屏幕,并提示同意对bot进行权限h应用程序。现在这可能会带来一些不好的体验,因为两者的权限可能会超过所需的个人权限,但这可以在将来通过Incremental Consent修复。

然后假设您使用的是自动缓存访问令牌的认证库,当用户打开第二个应用程序时,它们不会被提示同意,因为您已经为该应用程序ID缓存了一个令牌。

这显然不是最好的解决办法,但在过去被用于大型企业级应用之一。

+0

感谢您的回复。我的问题稍有不同,因为我只使用一个应用程序,但试图访问两个不同的资源。我不确定你的回答是否适用于这种情况,请你澄清一下吗? – Locksleyu

+0

我明白了,我稍微误解了你的问题。阅读这篇文章,关于[多资源刷新令牌(http://www.cloudidentity.com/blog/2013/10/14/adal-windows-azure-ad-and-multi-resource-refresh-tokens/)。 –