Auth0 LoginResult 无法加载 Newtonsoft.Json 10.0.0.0

Posted

技术标签:

【中文标题】Auth0 LoginResult 无法加载 Newtonsoft.Json 10.0.0.0【英文标题】:Auth0 LoginResult not able to load Newtonsoft.Json 10.0.0.0 【发布时间】:2018-12-28 07:37:07 【问题描述】:

我在尝试使用Auth0.OidcclientWpf SDK 实现LoginAsync 时遇到了一种奇怪的情况。我正在使用以下代码:

private async void PerformAuthenticationAsync()

    Auth0Client auth0Client = new Auth0Client(new Auth0ClientOptions()
    
         Domain = "mydomain",
         ClientId = "clientid"
    );

     var extraParameters = new Dictionary<string, string>();
     extraParameters.Add("connection", "connectionParam");
     var result = await auth0Client.LoginAsync(extraParameters: extraParameters);

执行身份验证过程后,我收到错误:

Not able to load NewtonSoftJson.dll version - 10.0.0.0

来源是Identitymodel.oidclient。在将IdentityModelEventSource.ShowPII 设置为True 之后,我可以在跟踪中看到我正在寻找的令牌已收到,但LoginResult 无法解码标头。

我尝试在我的项目中引用 NewtonSoft.Json dll 版本 10.0.2。现在我得到了这样的异常:

Not able to load NewtonSoftJson.dll version 11.0.0.0

这一次甚至没有启动浏览器来输入凭据。

我很困惑我应该参考哪个版本的NewtonSoft.Json dll?我将我的IdentityModel.oidcclient 更新到了最新版本。即使在那之后IdentityModel.Oidcclient.LoginResult 仍在抱怨NewtonSoft.Json version 10.0.0.0 不可用。

我不确定真正的问题是什么。我是否必须参考两个版本(10 和 11)以及如何做到这一点?如果有人可以提供帮助,我将不胜感激。

更新

下面是我得到的踪迹-

System.TypeInitializationException:类型初始化器 'System.IdentityModel.Tokens.Jwt.JsonExtensions' 引发异常。 ---> System.IO.FileLoadException:无法加载文件或程序集'Newtonsoft.Json,版本=10.0.0.0,文化=中性, PublicKeyToken=30ad4fe6b2a6aeed' 或其依赖项之一。这 定位程序集的清单定义与程序集不匹配 参考。 (来自 HRESULT 的异常:0x80131040)在 System.IdentityModel.Tokens.Jwt.JsonExtensions..cctor() --- 结束 内部异常堆栈跟踪 --- 在 System.IdentityModel.Tokens.Jwt.JsonExtensions.DeserializeJwtHeader(字符串 jsonString) 在 System.IdentityModel.Tokens.Jwt.JwtSecurityToken.Decode(String[] tokenParts, String rawData) --- 内部异常堆栈跟踪结束 --- 在 System.IdentityModel.Tokens.Jwt.JwtSecurityToken.Decode(String[] tokenParts,字符串 rawData) 在 System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.ReadJwtToken(字符串 令牌)在 IdentityModel.OidcClient.IdentityTokenValidator.d__4.MoveNext() >

【问题讨论】:

【参考方案1】:

同样的问题,Auth0.OidcClient 2.2.0.0 和 Newtonsoft.Json 版本 11.0.0.0。

对于这个问题,我也没有真正的解决方案。最后,我实现了一个自定义程序集解析处理程序作为解决方法。

为了确保这不会影响应用程序的其余部分,我只是在登录窗口打开时临时安装处理程序。我还确保只加载名为“Newtonsoft.Json”的程序集。处理程序在执行程序集的文件夹中查找 Newtonsoft.Json 程序集。

【讨论】:

以上是关于Auth0 LoginResult 无法加载 Newtonsoft.Json 10.0.0.0的主要内容,如果未能解决你的问题,请参考以下文章

无法解析值“$auth0.audience”中的占位符“auth0.audience”

无法使用 auth0 锁定登录

无法在 Java 项目中导入 com.auth0.jwt

Auth0 PKCE Grant 无法验证代码验证器

Auth0 java-jwt 库无法验证有效令牌

无法注销。基于 Auth0 的 React Native Expo 应用程序