来自xamarin博客文章的直接流程效果很好https://blog.xamarin.com/put-adal-xamarin-forms/。
我们的应用需要AD授权才能获取访问令牌以与我们的API进行通信。此外,它还包含带有sharepoint站点的webview。因此,我们应该在用户通过ADAL登录后实施SSO到sharepoint。 现在ADAL使用login.microsoftonline.com/{tenantId}/oauth2/ url显示webview,它不包含“让我登录”按钮,因此它只保存会话cookie。当用户使用sharepoint站点打开webview时,它非常有用。但是,在关闭应用程序后,他必须再次登录,因为只有会话cookie。
是否有人知道如何强制login.microsoftonline.com保存持久性Cookie或显示“让我登录”按钮?
答案 0 :(得分:0)
没有办法强制服务设置持久性cookie。没有办法做你今天想做的事。
此外,下一代库(Microsoft身份验证库,即MSAL)将使用系统Web视图而不是进程内Web视图,遵循一般行业趋势,从登录操作中移除进程内Web视图
Net,将来当您能够转移到MSAL时,如果您在系统Web视图中启动Web应用程序(例如SharePoint),您可以在应用程序和浏览器中运行的Web应用程序之间进行单点登录。
答案 1 :(得分:0)
使用ADAL 3,您可以使用令牌缓存(本地文件),并在创建AuthenticationContext时将其作为参数传递。然后,您调用AcquireTokenSilentAsync尝试从缓存中检索令牌,而不提示用户。如果令牌不存在,则会引发AdalException。然后,您调用AcquireTokenAsync,这将显示一个登录对话框,用户可以在其中输入其凭据。然后将令牌保存到令牌缓存中,以备下次使用。
这不会完全保存cookie,但是会保存令牌,这将阻止用户再次登录。