2017-05-04 64 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/)。 –