使用Entra ID CIAM原生认证时,如何处理Redirect fallback与SSO不支持的冲突?
解决方案:Entra ID CIAM原生认证下的Redirect Fallback配置(无SSO支持场景)
核心认知澄清
Entra ID CIAM的两份文档不存在真正矛盾:
- 要求配置Redirect fallback是指用**标准OAuth 2.0授权码流(PKCE)**作为密码/OOB认证失败后的备选方案,而非SSO流;
- 原生认证不支持SSO是指该流程无法复用已有SSO会话,不影响使用PKCE流作为fallback。
具体处理步骤
修正应用注册配置
在Entra ID后台的应用注册中,确保已添加「移动和桌面应用」平台,配置匹配Expo应用的重定向URI(推荐使用Expo Auth Session的回调URL,如exp://<你的Expo项目地址>/--/oauthredirect,或自定义深度链接)。无需寻找SSO相关设置,因为fallback不依赖SSO。代码中实现PKCE流作为Redirect fallback
当调用原生认证API收到redirect挑战类型时,切换到PKCE授权码流:- 使用Expo Auth Session库发起授权请求,指定Entra ID授权端点、客户端ID、重定向URI、必要scope(如
openid profile email),并自动生成PKCE参数; - 授权完成后,用返回的授权码向Entra ID令牌端点交换ID令牌和访问令牌;
- 拿到令牌后继续应用的认证逻辑,无需涉及SSO相关参数。
- 使用Expo Auth Session库发起授权请求,指定Entra ID授权端点、客户端ID、重定向URI、必要scope(如
规避SSO相关错误
不要在原生认证请求中传递任何SSO相关参数(如prompt=none、domain_hint),避免触发AADSTS700054类错误。所有fallback流程严格走PKCE流,不依赖SSO会话。
关键提醒
原生认证的Redirect fallback本质是降级到标准移动应用OAuth流程,而非SSO。只要确保应用注册的重定向URI配置正确,代码中正确实现PKCE流,就能满足API的fallback要求,同时避开SSO不支持的限制。
内容的提问来源于stack exchange,提问作者Thimo Luijsterburg
相关产品推荐
相关产品推荐

