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

iOS App微软SSO登录报错:仅接受POST请求,却收到GET请求

问题描述

我有一款通过PWA Builder创建、已上架苹果商店的应用,需通过SSO登录微软账号:

  • 在Safari浏览器中登录完全正常;
  • 但在苹果商店的App中,输入密码后(本该触发双因素认证),弹出错误提示:The endpoint only accepts POST requests. Received a GET request.,且查看网络面板发现输入密码后并未发送任何请求。

已尝试的操作:

  • 将所有必要域名添加至info.plist的WKAppBoundDomains列表中;
  • 清除所有Cookie,但均无效果。

后端通过WorkOS获取login.microsoft.online的授权URL,用户在此完成认证,后端代码如下:

public async Task<SystemMessage> SsoLoginAsync(string email)
{
    WorkOS.WorkOS.SetApiKey(_settings.WorkOsApiKey); 
    SSOService ssoService = new();
    
    ApplicationUser user = await _db.Users
        .Include(o => o.Client)
        .Where(o => 
            o.Email == email 
            && o.IsActive == true
        ).FirstOrDefaultAsync();
    if (user == null) { return Notification.ErrorMessage("Could not Authenticate"); }
    string orgId = user.Client?.SsoOrganizationId;
    if (orgId == null) { return Notification.ErrorMessage("Could not Authenticate"); }

    GetAuthorizationURLOptions options = new()
    {
        ClientId = _settings.WorkOsClientId
        , Organization = orgId
        , RedirectURI = _settings.BaseUrl + "login?fromSso=true"
    };
    string ssoUrl = ssoService.GetAuthorizationURL(options);
   
    return Notification.SuccessMessage(
        ""
        , value: new { ssoUrl, email }
        , showSystemMessage: false
    );
}
解决方案建议

1. 检查WorkOS授权URL的请求方法配置

微软Azure AD的授权端点默认支持GET和POST,但WorkOS生成的URL可能因配置限制强制使用GET,而苹果App内的WKWebKit环境可能拦截了GET请求的表单提交。可以尝试:

  • 查看WorkOS的GetAuthorizationURL方法是否支持指定请求方法(比如强制POST);
  • 手动构造授权URL时,确保认证请求以POST方式提交。

2. 验证PWA在App环境下的WKWebKit表单提交行为

PWA Builder打包的iOS App依赖WKWebKit,可能存在表单提交被拦截的情况:

  • 检查App内的WKWebView是否禁用了JavaScript自动提交表单;
  • 确认是否有Content Security Policy (CSP) 规则阻止了POST请求;
  • 检查WKWebView配置中是否开启了必要权限,确保表单提交的JS逻辑正常执行。

3. 确认RedirectURI的合规性

苹果App对重定向URI有严格要求:

  • 确保RedirectURI使用App的自定义URL scheme或已在苹果开发者后台配置的关联域名;
  • 避免使用带查询参数的RedirectURI(比如login?fromSso=true),部分认证服务对带参数的重定向处理异常,可简化为login路径,后续通过其他方式传递fromSso参数。

4. 检查微软Azure AD应用注册设置

虽然Safari正常,但App环境的请求可能触发不同认证规则:

  • 登录Azure AD后台,检查应用注册的「认证」设置中是否允许公共客户端流(适配移动/App场景);
  • 确认授权端点是否开启POST请求支持(默认开启,可再次验证)。

5. 排查PWA Builder的打包配置

PWA Builder的打包选项可能影响WKWebKit行为:

  • 检查打包时是否完整配置了「App Bound Domains」,确保login.microsoftonline.com等相关域名被正确添加;
  • 尝试重新打包App,选择针对iOS的优化选项,启用WKWebView的所有必要权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 23:11:13