IdentityServer3的nuGet packages/MS库的最高版本是什么

IdentityServer3的nuGet packages/MS库的最高版本是什么,identityserver3,Identityserver3,我正在使用Visual Studio 2015并使用IdentityServer 3启动。我尽可能多地阅读,这个版本需要Katana和Owin 1.0。然而,一些MS库和nuGet工具引入了突破性的更改 目前我还没有准备好深入研究.Net代码或IdentityServer 4。但是,按照Scott Brady的工作说明,我无法在MVC应用程序中使用IdentityServer 3。TokenValidationParameters有一个突破性的更改 我应该如何进行?我的一个软件包需要降级吗 &l

我正在使用Visual Studio 2015并使用IdentityServer 3启动。我尽可能多地阅读,这个版本需要Katana和Owin 1.0。然而,一些MS库和nuGet工具引入了突破性的更改

目前我还没有准备好深入研究.Net代码或IdentityServer 4。但是,按照Scott Brady的工作说明,我无法在MVC应用程序中使用IdentityServer 3。TokenValidationParameters有一个突破性的更改

我应该如何进行?我的一个软件包需要降级吗

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Antlr" version="3.5.0.2" targetFramework="net452" />
  <package id="bootstrap" version="3.3.7" targetFramework="net452" />
  <package id="jQuery" version="3.1.1" targetFramework="net452" />
  <package id="jQuery.Validation" version="1.16.0" targetFramework="net452" />
  <package id="Microsoft.AspNet.Mvc" version="5.2.3" targetFramework="net452" />
  <package id="Microsoft.AspNet.Razor" version="3.2.3" targetFramework="net452" />
  <package id="Microsoft.AspNet.Web.Optimization" version="1.1.3" targetFramework="net452" />
  <package id="Microsoft.AspNet.WebPages" version="3.2.3" targetFramework="net452" />
  <package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="1.0.3" targetFramework="net452" />
  <package id="Microsoft.IdentityModel.Logging" version="1.1.3" targetFramework="net452" />
  <package id="Microsoft.IdentityModel.Tokens" version="5.1.3" targetFramework="net452" />
  <package id="Microsoft.jQuery.Unobtrusive.Validation" version="3.2.3" targetFramework="net452" />
  <package id="Microsoft.Net.Compilers" version="1.3.2" targetFramework="net452" developmentDependency="true" />
  <package id="Microsoft.Owin" version="3.0.1" targetFramework="net452" />
  <package id="Microsoft.Owin.Host.SystemWeb" version="3.0.1" targetFramework="net452" />
  <package id="Microsoft.Owin.Security" version="3.0.1" targetFramework="net452" />
  <package id="Microsoft.Owin.Security.Cookies" version="3.0.1" targetFramework="net452" />
  <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net452" />
  <package id="Modernizr" version="2.8.3" targetFramework="net452" />
  <package id="Newtonsoft.Json" version="9.0.1" targetFramework="net452" />
  <package id="Owin" version="1.0" targetFramework="net452" />
  <package id="Respond" version="1.4.2" targetFramework="net452" />
  <package id="System.IdentityModel.Tokens.Jwt" version="5.1.3" targetFramework="net452" />
  <package id="WebGrease" version="1.6.0" targetFramework="net452" />
</packages>

受影响的代码:

private async Task<IEnumerable<Claim>> ValidateIdentityTokenAsync(string token, string state)
{
    const string certString = "MIIDBTCCAfGgAwIBAgIQNQb+T2ncIrNA6cKvUA1GWTAJBgUrDgMCHQUAMBIxEDAOBgNVBAMTB0RldlJvb3QwHhcNMTAwMTIwMjIwMDAwWhcNMjAwMTIwMjIwMDAwWjAVMRMwEQYDVQQDEwppZHNydjN0ZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqnTksBdxOiOlsmRNd+mMS2M3o1IDpK4uAr0T4/YqO3zYHAGAWTwsq4ms+NWynqY5HaB4EThNxuq2GWC5JKpO1YirOrwS97B5x9LJyHXPsdJcSikEI9BxOkl6WLQ0UzPxHdYTLpR4/O+0ILAlXw8NU4+jB4AP8Sn9YGYJ5w0fLw5YmWioXeWvocz1wHrZdJPxS8XnqHXwMUozVzQj+x6daOv5FmrHU1r9/bbp0a1GLv4BbTtSh4kMyz1hXylho0EvPg5p9YIKStbNAW9eNWvv5R8HN7PPei21AsUqxekK0oW9jnEdHewckToX7x5zULWKwwZIksll0XnVczVgy7fCFwIDAQABo1wwWjATBgNVHSUEDDAKBggrBgEFBQcDATBDBgNVHQEEPDA6gBDSFgDaV+Q2d2191r6A38tBoRQwEjEQMA4GA1UEAxMHRGV2Um9vdIIQLFk7exPNg41NRNaeNu0I9jAJBgUrDgMCHQUAA4IBAQBUnMSZxY5xosMEW6Mz4WEAjNoNv2QvqNmk23RMZGMgr516ROeWS5D3RlTNyU8FkstNCC4maDM3E0Bi4bbzW3AwrpbluqtcyMN3Pivqdxx+zKWKiORJqqLIvN8CT1fVPxxXb/e9GOdaR8eXSmB0PgNUhM4IjgNkwBbvWC9F/lzvwjlQgciR7d4GfXPYsE1vf8tmdQaY8/PtdAkExmbrb9MihdggSoGXlELrPA91Yce+fiRcKY3rQlNWVd4DOoJ/cPXsXwry8pWjNCo5JD8Q+RQ5yZEy7YPoifwemLhTdsBz3hlZr28oCGJ3kbnpW0xGvQb3VHSTVVbeei0CfXoW6iz1";

    var cert = new X509Certificate2(Convert.FromBase64String(certString));

    var result = await this.Request
        .GetOwinContext()
        .Authentication
        .AuthenticateAsync("TempCookie");

    if (result == null)
    {
        throw new InvalidOperationException("No temp cookie");
    }

    if (state != result.Identity.FindFirst("state").Value)
    {
        throw new InvalidOperationException("invalid state");
    }

    var parameters = new TokenValidationParameters
    {
        ValidAudience = "implicitclient",
        ValidIssuer = IdServBaseUri,
        IssuerSigningKeys = new X509SecurityToken(cert)
    };

    var handler = new JwtSecurityTokenHandler();
    Microsoft.IdentityModel.Tokens.SecurityToken jwt;
    var id = handler.ValidateToken(token, parameters, out jwt);

    if (id.FindFirst("nonce").Value != result.Identity.FindFirst("nonce").Value)
    {
        throw new InvalidOperationException("Invalid nonce");
    }

    this.Request.GetOwinContext().Authentication.SignOut("TempCookie");

    return id.Claims;
}
专用异步任务ValidateIdentityTokenAsync(字符串标记,字符串状态)
{
常量字符串certString="2.一位科学家在一篇文章中提出了一个新的概念,一个新的一个新的一个新的概念是一个新的概念,一个新的概念是一个什么样的问题,一个什么样的科学家是一个什么样的世界是一个什么样的世界是一个什么样的世界是一个什么样的世界是一个什么样的世界是一个什么样的世界是一个什么样的世界是一个什么样的世界是一个什么样的世界是一个新的世界是一个新的中国中国是一个新的中国中国的中国的一个新的一个新的一个新的一个新的中国中国中国的一个新的一个新的一个新的世界,一个新的一个新的一个中国中国的中国的中国的一个中国的一个新的一个新的世界,一个新的一个新的2 2 2 2个新的2个中国的2个中国的中国的2个新的中国的中国的lxw8nu4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4 4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4 4+4+4 4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4 4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4 4+4+4+4 4 HQUAA4IBAQBUNM2.2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 0CFxOW6IZ1”;
var cert=new X509Certificate2(Convert.FromBase64String(certString));
var result=等待此请求
.GetOwinContext()
.身份验证
.AuthenticateTasync(“TempCookie”);
如果(结果==null)
{
抛出新的InvalidOperationException(“无临时cookie”);
}
if(state!=result.Identity.FindFirst(“state”).Value)
{
抛出新的InvalidOperationException(“无效状态”);
}
var参数=新的令牌验证参数
{
validudience=“隐式客户端”,
ValidIssuer=IdServBaseUri,
IssuerSigningKeys=新X509SecurityToken(证书)
};
var handler=新的JwtSecurityTokenHandler();
Microsoft.IdentityModel.Tokens.SecurityToken jwt;
var id=handler.ValidateToken(令牌、参数、out jwt);
if(id.FindFirst(“nonce”).Value!=result.Identity.FindFirst(“nonce”).Value)
{
抛出新的InvalidOperationException(“无效的nonce”);
}
this.Request.GetOwinContext().Authentication.SignOut(“TempCookie”);
返回id。索赔;
}

这需要一些挖掘和实验。以下是要点

  • 确保没有对Microsoft.IdentityModel.Tokens的引用(如果有,请删除该包)
  • 确保你降级到 System.IdentityModel.Tokens.Jwt v4.x(删除对#1的依赖)
  • 添加对System.IdentityModel的引用(用于SecurityToken和JwtSecurityTokenHandler.ValidateToken)