强制 ADAL 保存持久性 cookie

Force ADAL to save persistent cookies

来自 xamarin 博客的直接流量 post 效果很好 https://blog.xamarin.com/put-adal-xamarin-forms/

我们的应用程序需要 AD 授权才能获取访问令牌才能与我们的 API 进行通信。此外,它还包含带有共享点站点的 webview。所以我们应该在用户通过 ADAL 登录后实现 SSO 到共享点。 现在 ADAL 显示带有 login.microsoftonline.com/{tenantId}/oauth2/ url 的 webview,它不包含“让我登录”按钮,因此它只保存会话 cookie。当用户使用 Sharepoint 站点打开 webview 时效果很好。然而,在关闭应用程序后,他必须再次登录,因为只有会话 cookie。

有谁知道如何强制 login.microsoftonline.com 保存持久性 cookie 或显示“让我保持登录”按钮?

无法强制服务设置持久性 cookie。没有办法做你今天想做的事。

此外,下一代库(Microsoft Authentication Library aka MSAL)将使用系统 Web 视图而不是进程内 Web 视图,遵循一般行业趋势,从进程内 Web 视图转移到签名-在运营中。

网络,将来当您能够迁移到 MSAL 时,如果您启动 Web 应用程序(例如 SharePoint),您可以在浏览器中在您的应用程序和 Web 应用程序之间实现单点登录 运行在系统网页视图中。

使用 ADAL 3,您可以使用令牌缓存(本地文件)并在创建 AuthenticationContext 时将其作为参数传入。然后,您调用 AcquireTokenSilentAsync 以尝试在不提示用户的情况下从缓存中检索令牌。如果令牌不存在,则会抛出 AdalException。然后调用 AcquireTokenAsync,这将显示一个登录对话框,用户可以在其中输入其凭据。然后将令牌保存在令牌缓存中以备下次使用。

这并没有完全保存 cookie,但它确实保存了令牌,这将防止用户必须再次登录。