2016-06-30 43 views
42

Ho il seguente codice che stava lavorando quando stavo usando System.IdentityModel.Tokens.Jwt, Version = 4.0.20622.1351TokenValidationParameters non funziona più dopo l'aggiornamento a 5.0.0

private static void ConfigureAzureAD(IAppBuilder appBuilder) 
{ 
    appBuilder.UseWindowsAzureActiveDirectoryBearerAuthentication(
     new WindowsAzureActiveDirectoryBearerAuthenticationOptions 
     { 
      Tenant = ConfigurationManager.AppSettings["ida:Tenant"], 
      TokenValidationParameters = new System.IdentityModel.Tokens.TokenValidationParameters 
      { 
       ValidAudience = ConfigurationManager.AppSettings["ida:Audience"] 
      } 
     }); 
} 

Tuttavia come Appena ho aggiornato questo pacchetto all'ultimo uno che è version 5 non compila più lamentando Il riferimento al tipo "TokenValidationParameters" afferma che è stato definito in System.IdentityModel.Token.Jwt ma non è stato trovato.

anche se si tenta il seguente compilatore vi avvertirà che Pubblico è obsoleto:

private static void ConfigureAzureAD(IAppBuilder appBuilder) 
    { 
     appBuilder.UseWindowsAzureActiveDirectoryBearerAuthentication(
      new WindowsAzureActiveDirectoryBearerAuthenticationOptions 
      { 
       Tenant = ConfigurationManager.AppSettings["ida:Tenant"], 
       Audience = ConfigurationManager.AppSettings["ida:Audience"] 
      }); 
    } 

mi ha declassato di nuovo questa DLL e utilizzare la versione 4.0.20622.1351, ha iniziato la compilazione.

È stata apportata una modifica della sintassi per la configurazione di Azure Active Directory?

Su Github non sono riuscito a trovare un singolo progetto utilizzando l'ultimo pacchetto 5.0.0 e tutti utilizzano il pacchetto precedente 4.0.20622.1351. Qualcuno può far luce su questo utilizzando l'ultimo System.IdentityModel.Tokens.Jwt 5.0.0 o indirizzarmi a qualche progetto su Github utilizzando l'ultimo pacchetto?

+0

Aveva lo stesso problema. Guardando https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet sembra che 5.0 sia solo per ASP.NET Core. – Martin

risposta

23

TokenValidationParameters è in assemblea: Microsoft.IdentityModel.Tokens

Sembra che si sta utilizzando Katana (la prima versione di asp.net OWIN offerta). Katana non supporta 5.0.0. Devi rimanere con 4.x.

L'ultima versione di asp.net richiede una dipendenza da S.IM.xx e M.IM.xxx 5.0. https://github.com/aspnet

+9

Questa non è la risposta alla domanda. Il problema è completamente chiaro e sto cercando qualche soluzione. Non mi interessa in quale assembly è TokenValidationParameters. Mi aspetto che il codice funzioni quando aggiorno il pacchetto. – MHOOS

+0

@ MHOOS. Devi sapere in quale assembly TVP è presente se stai facendo questo 'nuovo System.IdentityModel.Tokens.TokenValidationParameters' nel tuo codice. Inoltre, è un aggiornamento della versione principale e ci sono cambiamenti di rottura come spiegato qui: https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/blob/master/CHANGELOG.md#major-changes- da-4x. I campioni possono essere trovati qui: https://github.com/Azure-Samples?utf8=%E2%9C%93&query=aspnetcore – ezile

+0

Inoltre, sembra che tu stia usando Katana. Ciò non supporta 5.x. – ezile

6

Non so quando o se questo sarà mai riparato, ma spero lo sarà. Ho già pubblicato questi problemi su Github site per le estensioni AAD e su Katana site. Puoi seguire le discussioni e i progressi su quei siti, e se ti interessa, puoi sempre postare il tuo interesse nel vedere questo indirizzo.

Non riesco a capire come questo non è stato visto come un problema prima del rilascio. "L'aggiornamento a .Net Core" non è una soluzione ragionevole. La mia app non ha possibilità di farlo per un bel po ', così come la maggior parte dei progetti non banali.

+1

Esiste un motivo specifico per cui è necessario eseguire l'aggiornamento a M.IM 5.0? S.IM 4.x è una versione supportata che funziona con Katana. –

+19

È il tao di Nuget. Mi piace mantenere pulita la finestra degli aggiornamenti di Nuget. Ho così tanti elementi Nuget aggiunti a questo progetto, e ci sono molti progetti su cui lavoro, che non riesco a ricordare "oh, questo articolo è un aggiornamento di rottura". Se la applichi, interromperà la tua app. Penso che un approccio migliore sarebbe stato quello di rilasciare un progetto Nuget separato, non come un aggiornamento. Chiamalo 5.0 o qualsiasi altra cosa, ma non è stato un aggiornamento. Sarebbe stato più pulito. Un aggiornamento può interrompere un progetto, ma con 5.0 non c'è quantità della mia codifica che possa risolverlo. Quindi non è un aggiornamento; è un nuovo prodotto – ChrisW

+1

Xhris, ho sentito. Volevamo mantenere logicamente i pacchetti insieme poiché rappresentano la nostra offerta IdentityModel for Core. Stiamo aggiustando Katana per usare la versione 5.x. Quindi, un paio di mesi questo andrà via. –

2

Quindi anche oggi sto riscontrando lo stesso problema. Dopo aver guardato in fondo penso che conosco la risposta.

In breve è il problema con il progetto Katana (http://katanaproject.codeplex.com/) essendo riuscito a rispettare le attuali cambiamenti di Windows Azure Active Directory estensioni IdentityModel for .NET (https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet)

Per maggiori dettagli, TokenValidationParameters c'era in System .IdentityModel.Tokens.Jwt assembly verion 4.0 ma è stato spostato nella versione 5.0. La nuova casa per questo è ora in assembly Microsoft.IdentityModel.Tokens.

Spiacente Non riesco a fornire una correzione si tratta di un cambiamento di progettazione da cui la base di codice Katana deve essere drammaticamente refactored.

+0

Questo è corretto. Stiamo lavorando a una correzione. Ci rendiamo conto che questo è un problema. –

0

Katana attualmente non funziona con il 5.x versione di IdentityModel. https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet

Tuttavia, sono in corso lavori per risolvere questo problema. La cronologia non è ancora impostata.

+2

Ho questo problema, ma non ho un pacchetto chiamato 'Katana' installato, gli autori erano abbastanza stupidi da dare un nome diverso al pacchetto dal nome del progetto ?? In tal caso, qual è il nome della cosa che è stata rimossa? Come posso farlo funzionare con 5.1, perché non vedo alcun senso nel fare nuove implementazioni nel modo vecchio/obsoleto. –

+1

Sembra che 6.22 MILIONI di persone lo abbiano scaricato, e si presume che siano anche sfortunati con i loro progetti. Non sembrano esserci esempi online di nessuno che usi questa versione aggiornata. Potrei dover fare quella domanda, invece. :-( –

+0

Katana era un nome di sviluppo per una versione di asp.net che utilizza la pipeline OWIN, è il precursore dell'attuale core di asp.net. Come step interno, le librerie IdentityModel sono state modificate per supportare Katana. Le versioni .x hanno gli obiettivi Standard .Net Non è possibile usarli contro la versione di Katana. Una versione aggiornata di Katana è pronta a breve per risolvere questo problema. –

4

Tl; dr - assicurarsi di utilizzare la versione 4.0 o successiva dei pacchetti Microsoft.Owin. *, Ad esempio Microsoft.Owin.Security.Jwt. Al momento della scrittura, i pacchetti 4.0 sono ancora in prerelease, quindi dovrai spuntare "Includi prerelease" per vedere questi aggiornamenti nella GUI di NuGet.


Come le altre risposte citate, c'è stato un cambiamento di rottura in System.IdentityModel.Tokens.Jwt dalla versione 4.0 a 5.0. Ciò ha causato problemi poiché alcuni pacchetti come Microsoft.IdentityModel.Protocols dipendevano dalla versione 5.0, mentre i pacchetti Katana/OWIN precedenti come Microsoft.Owin.Security.Jwt erano ancora codificati in modo fisso a seconda della versione 4.0.

La buona notizia è che questo è being fixed nella nuova versione Katana 4.0. I pacchetti 4.0 (come Jwt e Cookies) sono stati pubblicati in NuGet come pacchetti di versioni preliminari e saranno presto disponibili come pacchetti stabili.

+3

Abbiamo rilasciato IdentityModel 5.2.0-preview1 con Katana 4.0-alpha1 su nuget.org. https://www.nuget.org/packages/Microsoft.Owin.Security.OpenIdConnect/4.0.0-alpha1 e https://www.nuget.org/packages/Microsoft.IdentityModel.Tokens/5.2.0-preview1- 408290725 –

+0

@ BrentSchmaltz Bello, entusiasta di vedere ose 4.0 pacchetti che fanno progressi verso la stabilità! Aggiornato la mia risposta. –

+0

6 mesi dopo, questi pacchetti sono ancora in pre-release ... –