何时可以共享ADAL令牌? (IOS)

时间:2017-05-04 21:46:49

标签: ios authentication azure-active-directory adal

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

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

May 4 13:22:37 iPad MyApp [290]:ADAL 2.4.1 iOS 10.2.1 [2017-05-04 20:22:37 - XXXX]信息:找不到查询的项目:(resource { {3}} +客户端+权限https://MYRESOURCE

所以我的问题是,在什么情况下会在资源之间共享令牌,是否有任何特殊的限制(使用API​​的方式)允许这样做?

1 个答案:

答案 0 :(得分:1)

如果要构建两个本机客户端(公共客户端)并且要在两者之间启用单点登录,则一个选项是在应用程序之间共享App ID,而不是将实际令牌从一个服务传递到另一个服务。 / p>

例如,假设您的公司名称是Contoso。您有一个日历移动应用程序和一个文档编辑器应用程序。

您可以使用以下命令创建单个Native Client应用程序:

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

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

然后假设您正在使用我们的身份验证库来自动缓存访问令牌,当用户打开第二个应用程序时,他们将不会被提示同意,因为您已经为该应用程序ID缓存了令牌。

这显然不是最好的解决方案,而是过去用于大型企业应用程序的解决方案。