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

OAuth资源服务器返回错误Authentication URI(Bearer error=invalid_token)求助

问题诊断与解决方案

核心问题定位

错误提示里的authorization_uri指向错误的https://mytokenserver/login,而正确地址是https://mytokenserver/oauth2/authorize。结合你排查CRM无相关设置的结论,问题确实出在生成Assertion JWT的逻辑中——JWT断言里包含了错误的授权端点/颁发者信息,导致Dynamics CRM验证令牌时元数据不匹配,触发invalid_token错误。

具体修复步骤

  1. 定位JWT生成代码中的错误字段
    找到你C#代码里构建Assertion JWT的部分,重点检查以下两类字段:

    • 标准JWT声明:iss(颁发者)字段,很多OAuth实现会用这个字段关联授权端点的合法URI;
    • 自定义声明:如果代码里有手动添加authorization_uri这类自定义声明,直接检查其值。
  2. 修正字段值
    将错误的https://mytokenserver/login替换为正确的https://mytokenserver/oauth2/authorize。以下是常见C# JWT库的修正示例:

    示例1:使用System.IdentityModel.Tokens.Jwt库

    原错误代码:

    var claims = new List<Claim>
    {
        new Claim(JwtRegisteredClaimNames.Iss, "https://mytokenserver/login"),
        // 其他声明(如sub、aud等)
    };
    

    修正后:

    var claims = new List<Claim>
    {
        new Claim(JwtRegisteredClaimNames.Iss, "https://mytokenserver/oauth2/authorize"),
        // 其他声明(如sub、aud等)
    };
    

    示例2:自定义authorization_uri声明

    原错误代码:

    claims.Add(new Claim("authorization_uri", "https://mytokenserver/login"));
    

    修正后:

    claims.Add(new Claim("authorization_uri", "https://mytokenserver/oauth2/authorize"));
    
  3. 对齐Java OAuth服务器配置
    确认你的Java OAuth服务器预配置的颁发者URI是否与你代码里设置的https://mytokenserver/oauth2/authorize一致。部分OAuth服务器会严格校验JWT的iss字段必须匹配后端配置值,不匹配会直接拒绝生成有效访问令牌。

验证步骤

  • 生成修正后的Assertion JWT,用本地解码工具(比如编写简单的C#解码代码)解析,确认目标字段值已更新;
  • 向Token Endpoint请求访问令牌,解码该Bearer令牌,检查其中的iss或authorization_uri字段是否正确;
  • 用修正后的令牌请求Dynamics CRM资源,验证invalid_token错误是否消除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 02:00:08