iOS Swift应用集成MSAL 1.1.20后如何隐藏登录继续弹窗直接获取Token
iOS Swift MSAL 1.1.20 版本隐藏登录授权提示框方案
你遇到的弹窗是微软身份平台默认触发的授权确认页,出于安全合规要求默认会展示应用注册时填写的应用名称,可通过以下方案尝试隐藏,直接获取Token:
- 方案一:Azure后台配置豁免(适用企业单租户场景,优先推荐)
登录Azure应用注册后台,找到你的对应应用:- 进入「品牌和属性」页面,完成发行商域验证配置
- 进入「API权限」页面,给所有你申请的权限点击「授予管理员同意」,授权范围选择整个租户
配置完成后,租户内所有用户登录时都不会再触发该授权提示框。
- 方案二:代码层调整登录逻辑
优先走静默登录逻辑,无UI直接获取Token,仅静默登录失败时再唤起交互式登录:// 示例代码,适配MSAL 1.1.20版本 let account = try? msalContext.allAccounts().first let silentParams = MSALSilentTokenParameters(scopes: requiredScopes, account: account!) msalContext.acquireTokenSilent(with: silentParams) { (result, error) in if let result = result { // 直接拿到Token,无需弹窗 let accessToken = result.accessToken } else { // 静默失败,再走交互式登录 let webViewParams = MSALWebviewParameters(authPresentationViewController: presentationController) let interactiveParams = MSALInteractiveTokenParameters(scopes: requiredScopes, webviewParameters: webViewParams) interactiveParams.promptType = .loginHint msalContext.acquireToken(with: interactiveParams) { (result, error) in // 处理登录结果 } } } - 方案三:调整权限配置
如果你仅使用OpenID基础权限(openid、profile、offline_access),完成发行商域验证后,即使是多租户应用,也会默认豁免授权提示,无需额外申请管理员同意。
注意事项
- 个人微软账户登录场景下,该提示框为强制安全要求,目前没有关闭渠道
- 禁止通过hook WebView、拦截跳转等非常规方式跳过该页面,会被微软身份平台判定为风险应用,导致后续登录失败
内容的提问来源于stack exchange,提问作者Dhiru
相关产品推荐
相关产品推荐

