Depois de atualizar Microsoft.IdentityModel.Tokens
e System.IdentityModel.Tokens.Jwt
para 7.0.0
, recebo este erro:
IDX20803: Não é possível obter a configuração de: 'https://example.com/realms/Development/.well-known/openid-configuration'.
Não foi possível carregar o tipo 'Microsoft.IdentityModel.Json.JsonConvert' do assembly 'Microsoft.IdentityModel.Tokens, versão=7.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'. Não foi possível carregar o tipo 'Microsoft.IdentityModel.Json.JsonConvert' do assembly 'Microsoft.IdentityModel.Tokens, versão=7.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'. => Microsoft.IdentityModel.Json.JsonConvert
Antes da atualização, minhas referências de pacote eram:
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="7.0.10" />
<PackageReference Include="Microsoft.IdentityModel.Tokens" Version="6.32.3" />
<PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="6.32.3" />
<PackageReference Include="System.Text.Json" Version="7.0.3" />
Após a atualização, minhas referências de pacote são agora:
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="7.0.11" />
<PackageReference Include="Microsoft.IdentityModel.Tokens" Version="7.0.0" />
<PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="7.0.0" />
<PackageReference Include="System.Text.Json" Version="7.0.3" />
Qual é o problema?
TLDR: adicionar
<PackageReference Include="Microsoft.IdentityModel.Protocols.OpenIdConnect" Version="7.0.0" />
Com base nas notas de versão , entre v6 e v7 do
System.IdentityModel.Tokens.Jwt
, o serializador/desserializador JSON foi alterado de Newtonsoft Json.NET paraSystem.Text.Json
.Possui 2 dependências implícitas:
Microsoft.IdentityModel.Tokens
(que você deixou explícito neste caso)Microsoft.IdentityModel.JsonWebTokens
Conforme definido , o IdentityModel v7.0.0 também atualiza essas dependências implícitas para a v7.0.0 correspondente - conforme esperado e bom até agora.
O problema não está nos pacotes atualizados, mas destaca um problema com o
Microsoft.AspNetCore.Authentication.JwtBearer
pacote, que seria usado junto.Este pacote tem uma dependência implícita do
Microsoft.IdentityModel.Protocols.OpenIdConnect
.No entanto, o
Microsoft.AspNetCore.Authentication.JwtBearer
pacote v7.0.11 mais recente ainda afirma incorretamente queMicrosoft.IdentityModel.Protocols.OpenIdConnect
a v6.15.1 é válida.Isso está errado neste caso, pois a v6.15.1 não é compatível com o Identity Model 7 e suas dependências implícitas.
A solução é tornar a
Microsoft.IdentityModel.Protocols.OpenIdConnect
dependência explícita e especificar v7.0.0 em seu projeto, para substituir o pacote v6 implícito - corrigindo a incompatibilidade de versão da dependência.Esta deve ser uma correção temporária até que a Microsoft corrija isso em suas próximas atualizações de pacote.
Este é o conjunto mínimo de pacotes que corrigem esse problema: