Identityserver4 将IdentityServer从3.1.1升级到4.1.2打破自定义代码

Identityserver4 将IdentityServer从3.1.1升级到4.1.2打破自定义代码,identityserver4,Identityserver4,我在查找如何设置TokenCreationRequest.Resources时遇到问题,因为它已从TokenCreationRequest类中删除 在下面的代码中,您可以看到行tokenCreationRequest.Resources=await Resources.FindEnabledResourcesByScopeAsync(fullAccessTokenScopes)但缺少请求属性,如何继续 protected override async Task < TokenRespons

我在查找如何设置
TokenCreationRequest.Resources
时遇到问题,因为它已从TokenCreationRequest类中删除

在下面的代码中,您可以看到行
tokenCreationRequest.Resources=await Resources.FindEnabledResourcesByScopeAsync(fullAccessTokenScopes)但缺少请求属性,如何继续

protected override async Task < TokenResponse > ProcessRefreshTokenRequestAsync(TokenRequestValidationResult request) {
    if (AlwaysUpdateAccessTokenClaimsOnRefreshWithAllowedScopeFlag(request)) {
        Logger.LogTrace("Creating response for refresh token request");
        var accessToken = request.ValidatedRequest.RefreshToken.AccessToken;

        var subject = request.ValidatedRequest.RefreshToken.Subject;
        var tokenCreationRequest = new TokenCreationRequest {
            Subject = subject,
            ValidatedRequest = request.ValidatedRequest
        };

        var fullAccessTokenScopes = accessToken.Scopes.ToList();
        fullAccessTokenScopes = fullAccessTokenScopes.Union(request.ValidatedRequest.Client.AllowedScopes).ToList();

        // This is the line that broke Resources missing from TokenCreationRequest
        tokenCreationRequest.Resources = await Resources.FindEnabledResourcesByScopeAsync(fullAccessTokenScopes);

        var token = await TokenService.CreateAccessTokenAsync(tokenCreationRequest);
        var accessTokenString = await TokenService.CreateSecurityTokenAsync(token);

        var handle = await RefreshTokenService.UpdateRefreshTokenAsync(
        request.ValidatedRequest.RefreshTokenHandle, request.ValidatedRequest.RefreshToken, request.ValidatedRequest.Client);

        return new TokenResponse {
            IdentityToken = await CreateIdTokenFromRefreshTokenRequestAsync(request.ValidatedRequest, accessTokenString),
            AccessToken = accessTokenString,
            AccessTokenLifetime = request.ValidatedRequest.AccessTokenLifetime,
            RefreshToken = handle,
            Custom = request.CustomResponse
        };
    }
    return await base.ProcessRefreshTokenRequestAsync(request);
}
protectedoverride async TaskProcessRefreshTokenRequestAsync(TokenRequestValidationResult请求){
if(始终SupdateAccessTokenclaimsonRefreshWithAllowedScopeFlag(请求)){
LogTrace(“为刷新令牌请求创建响应”);
var accessToken=request.ValidatedRequest.RefreshToken.accessToken;
var subject=request.ValidatedRequest.refreshtToken.subject;
var tokenCreationRequest=新tokenCreationRequest{
主语,
ValidatedRequest=request.ValidatedRequest
};
var fullAccessTokenScopes=accessToken.Scopes.ToList();
fullAccessTokenScopes=fullAccessTokenScopes.Union(request.ValidatedRequest.Client.AllowedScopes.ToList();
//这是中断TokenCreationRequest中缺少的资源的行
tokenCreationRequest.Resources=await Resources.FindEnabledResourcesByScopeAsync(fullAccessTokenScopes);
var token=await TokenService.CreateAccessTokenAsync(tokenCreationRequest);
var accessTokenString=await TokenService.CreateSecurityTokenAsync(令牌);
var handle=await RefreshTokenService.UpdateRefreshTokenAsync(
request.ValidatedRequest.RefreshTokenHandle、request.ValidatedRequest.RefreshToken、request.ValidatedRequest.Client);
返回新的令牌响应{
IdentityToken=await CreateIdTokenFromRefreshTokenRequestAsync(request.ValidatedRequest,accessTokenString),
AccessToken=accessTokenString,
AccessTokenLifetime=request.ValidatedRequest.AccessTokenLifetime,
刷新令牌=句柄,
Custom=request.CustomResponse
};
}
返回wait base.ProcessRefreshTokenRequestAsync(请求);
}