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

迁移至MAUI后使用IdentityModel.OidcClient登录遇Unauthorized错误

排查MAUI下IdentityModel.OidcClient 6.0.0登录报错的问题

核心排查方向

这个Unauthorized: Failed to push authorization parameters错误,结合你从Xamarin迁移到MAUI+6.0.0版本的场景,大概率和配置格式、平台适配或库版本变更有关,按以下步骤逐一验证:

1. 核对OIDC客户端配置细节

  • 确认Authority地址必须以/结尾(例如https://your-auth-server/),6.0.0版本对地址格式的校验比5.x更严格,不带尾斜杠会导致参数推送失败。
  • 检查ClientId、RedirectUri和认证服务器的配置完全一致,尤其是RedirectUri的Scheme部分,Android上Scheme区分大小写,必须和Manifest中注册的完全匹配。
  • 确保Scope至少包含openid,如果需要刷新令牌,还要加上offline_access。

2. 验证Android回调配置正确性

  • 检查WebAuthenticationCallbackActivity的Manifest注册,确保intent-filter里的data标签Scheme和你的RedirectUriScheme一致,示例配置:
    <activity android:name="net.openid.appauth.RedirectUriReceiverActivity">
      <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:scheme="your-app-scheme" />
      </intent-filter>
    </activity>
    
  • 确认项目引用的是IdentityModel.OidcClient.Maui专用包,而非单独的IdentityModel.OidcClient——MAUI专用包已内置平台适配逻辑,普通包可能缺少Android端的必要依赖。

3. 检查浏览器调用的实现

  • 确认MauiAuthenticationBrowser正确使用MAUI的WebAuthenticator,6.0.0版本对浏览器调用逻辑有调整,标准实现示例:
    public class MauiAuthenticationBrowser : IBrowser
    {
        public async Task<BrowserResult> InvokeAsync(BrowserOptions options, CancellationToken cancellationToken = default)
        {
            var authResult = await WebAuthenticator.Default.AuthenticateAsync(
                new Uri(options.StartUrl),
                new Uri(options.EndUrl));
    
            var result = new BrowserResult
            {
                Response = authResult.Properties.Select(kv => $"{kv.Key}={kv.Value}").Aggregate((a, b) => $"{a}&{b}")
            };
    
            return result;
        }
    }
    
  • 确保Android项目已添加INTERNET权限,MAUI默认会自动配置,但如果手动修改过权限列表,需确认该权限未被移除。

4. 版本兼容性验证

  • 临时降级到5.2.1版本(和你原Xamarin项目使用的版本一致),如果能正常登录,说明是6.0.0版本的适配问题,可查看官方变更日志,重点关注MAUI平台的调整项。
  • 检查MAUI项目的目标.NET版本,6.0.0版本的OidcClient通常要求.NET 7及以上,若项目目标框架过低,会导致兼容性问题。

5. 认证服务器端配置检查

  • 确认客户端类型配置为public(MAUI应用属于公开客户端),若设为confidential,会拒绝参数推送请求。
  • 检查服务器是否开启PKCE支持,6.0.0版本的OidcClient默认启用PKCE,若服务器未配置该项,会触发认证失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 14:02:42