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(请求);
}