代码可以从microsoft的dev门户网站正常运行。但任何人都可以告诉我它在以下用例中应该如何表现
考虑两个应用:App1和App2
我开发了相同的代码并同时安装了两个应用
首先推出的App1会问我webview的凭据。没关系。因为我没有缓存或已经登录到日期。
成功登录后,应用程序可以正常登录
现在,当我打开App2时,它仍然会抛出我的登录页面。理想情况下,它应该采用App1的缓存并自动登录。
请注意:我提供了相同的共享ID'在清单
中的两个应用中请让我知道,因为我很长时间没有内部单点登录问题了
答案 0 :(得分:1)
我看到你用ADAL标记了这个问题,所以我假设你正在使用的是库。 ADAL使用 webviews 来提示登录.Android中的Webview不会在应用之间共享很多状态,而且几乎完全是沙盒(隔离且不共享会话cookie等) )。
现在,你绝对可以achieve SSO for Android using ADAL,你有两个选择:
Brokered SSO
使用像Microsoft身份验证器这样的代理应用程序,最终用户基本上在这里登录,以便他们能够在Broker的沙箱中维护会话。这允许任何登录Azure AD用户的应用程序共享状态。上面链接的文章解释了如何使您的应用程序使用代理。
非经纪人SSO
您可以在您拥有的所有应用之间配置SSO。这意味着最终用户将在App 1,App 2,App N之间获得SSO,但不一定在Azure AD生态系统中获得另一个应用程序。上面链接的文章解释了如何使您的应用程序使用非代理的SSO。
奖励选项:带有MSAL的v2
我之前说过ADAL使用webview进行登录,还有另一种方法可以使用系统的浏览器来支持Microsoft Authentication Library (MSAL)。很简单,这使用设备上的Chrome或Chrome自定义标签浏览器,而不是应用内网页浏览。然后,会话cookie在全局浏览器上设置,因此任何也使用浏览器的应用程序(或者如果最终用户本地使用浏览器登录)将获得SSO。这里的规定是MSAL适用于具有Azure AD v2.0 endpoint的some limitations,但也支持使用开箱即用的Microsoft帐户(* .outlook,* .live等)登录。
如果您对尝试使用v2 + MSAL感兴趣,我建议您尝试Android Guided Walkthrough,它将指导您如何构建调用Microsoft Graph的应用。