在使用microsoft azure sdk -ADAL的android中的sso

时间:2017-09-21 09:40:03

标签: android single-sign-on adal

代码可以从microsoft的dev门户网站正常运行。但任何人都可以告诉我它在以下用例中应该如何表现

考虑两个应用:App1和App2

我开发了相同的代码并同时安装了两个应用

首先推出的App1会问我webview的凭据。没关系。因为我没有缓存或已经登录到日期。

成功登录后,应用程序可以正常登录

现在,当我打开App2时,它仍然会抛出我的登录页面。理想情况下,它应该采用App1的缓存并自动登录。

请注意:我提供了相同的共享ID'在清单

中的两个应用中

请让我知道,因为我很长时间没有内部单点登录问题了

1 个答案:

答案 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 endpointsome limitations,但也支持使用开箱即用的Microsoft帐户(* .outlook,* .live等)登录。

如果您对尝试使用v2 + MSAL感兴趣,我建议您尝试Android Guided Walkthrough,它将指导您如何构建调用Microsoft Graph的应用。