You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Safari浏览器与iOS应用间共享Azure B2C登录会话?

Azure B2C 原生APP与WebView会话共享问题解答

能否实现登录会话共享?

可以实现,但需根据WebView类型和Azure B2C配置调整:

  • SFSafariViewController:它共享系统Safari的Cookie池,只要网站和APP属于同一Azure B2C租户、应用配置支持跨应用SSO,且未启用隐私浏览模式,理论上会自动同步会话。若未生效,检查B2C的会话过期时间、SSO配置是否开启。
  • WKWebView:默认使用独立Cookie存储,无法直接与Safari或MSAL原生会话共享,需手动配置Cookie同步或通过令牌传递实现。

是否必须使用OAuth或传递用户令牌?

不是强制要求,但这是最可靠的方案之一,可选方式包括:

1. 传递MSAL获取的令牌到WebView

从MSAL已登录会话中获取ID Token,通过URL参数、POST请求或注入JS的方式传递给网站。网站后端通过Azure B2C的JWKS端点验证令牌有效性后,为WebView会话建立登录状态。这种方式不依赖Cookie,兼容性更强。

2. 同步WKWebView与MSAL的Cookie(iOS 11+)

通过WKHTTPCookieStore将MSAL原生会话中的Azure B2C相关Cookie(如ARRAAuth)添加到WKWebView的Cookie存储中。注意需确保Cookie的HttpOnly、SameSite属性符合网站域名规则,否则可能无法生效。

3. 复用MSAL的WebView集成能力

初始化MSALPublicClientApplication时,通过MSALWebviewParameters指定WebView类型,让MSAL在登录流程中复用WebView会话,或关联已有的原生登录会话,打通原生与WebView的登录状态。

关键配置要点

  • 网站和APP必须属于同一Azure B2C租户,且应用注册中配置了允许跨应用SSO,或使用相同的重定向URI。
  • 检查B2C用户流/自定义策略中的Single sign-on session management配置,确保SSO已开启且会话有效期设置合理。
  • WKWebView避免使用nonPersistent类型的websiteDataStore,否则会阻止Cookie持久化,导致会话无法保留。

内容的提问来源于stack exchange,提问作者nirav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 16:27:18