在尝试使用LoginAsync
SDK来实现Auth0.OidcclientWpf
时,我遇到了一种奇怪的情况。我正在使用以下代码:
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(String jsonString) System.IdentityModel.Tokens.Jwt.JwtSecurityToken.Decode(String [] tokenParts,字符串rawData)---内部异常堆栈跟踪的结尾 ---在System.IdentityModel.Tokens.Jwt.JwtSecurityToken.Decode(String [] tokenParts,字符串rawData)位于 System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.ReadJwtToken(字符串 令牌) IdentityModel.OidcClient.IdentityTokenValidator.d__4.MoveNext() >
答案 0 :(得分:0)
此处存在相同的问题,使用Auth0.OidcClient 2.2.0.0和Newtonsoft.Json版本11.0.0.0。
我也没有解决这个问题的办法。最后,我实现了一个自定义程序集解析处理程序作为解决方法。
为确保这不会影响应用程序的其余部分,我仅在打开登录窗口时临时安装处理程序。我还确保仅加载名为“ Newtonsoft.Json”的程序集。处理程序在执行程序集的文件夹中查找Newtonsoft.Json程序集。