2016-06-30 2 views
42

У меня есть следующий код, который работал, когда я использовал System.IdentityModel.Tokens.Jwt, Version = 4.0.20622.1351TokenValidationParameters больше не работает после обновления до 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"] 
      } 
     }); 
} 

Однако, как вскоре, когда я обновил этот пакет до последнего, который равен version 5, он больше не компилирует жалобы Ссылка на тип «ТокенValidationParameters» утверждает, что он определен в System.IdentityModel.Token.Jwt, но его не удалось найти.

Кроме того, если вы пытаетесь следующий компилятор предупредит вас, что аудитории является устаревшим:

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

Я понизил этот DLL снова и использовал версию 4.0.20622.1351, она начала компиляцию.

Был ли изменен синтаксис для настройки Azure Active Directory?

В Github Я не смог найти ни одного проекта, используя последний пакет 5.0.0, и все они используют предыдущий пакет 4.0.20622.1351. Может ли кто-нибудь пролить свет на это, используя последнюю версию System.IdentityModel.Tokens.Jwt 5.0.0 или направить меня в какой-то проект на Github, используя последний пакет?

+0

Была такая же проблема. Глядя на https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet, кажется, что 5.0 предназначен только для ASP.NET Core. – Martin

ответ

23

TokenValidationParameters в сборке: Microsoft.IdentityModel.Tokens

Похоже, что вы используете Katana (первую версию ASP.NET Owin размещения). Katana не поддерживает 5.0.0. Вам нужно придерживаться 4.x.

Последняя версия asp.net принимает зависимость от S.IM.xx и M.IM.xxx 5.0. https://github.com/aspnet

+9

Это не ответ на вопрос. Проблема полностью ясна, и я ищу некоторые исправления. Мне не важно, в какой сборке есть TokenValidationParameters. Я ожидаю, что код будет работать, когда я обновляю пакет. – MHOOS

+0

@MHOOS. Вам нужно знать, в какой сборке TVP присутствует, если вы делаете этот «новый System.IdentityModel.Tokens.TokenValidationParameters» в своем коде. Кроме того, это обновление основной версии, и здесь есть изменения, описанные здесь: https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/blob/master/CHANGELOG.md#major-changes- из-4x. Образцы можно найти здесь: https://github.com/Azure-Samples?utf8=%E2%9C%93&query=aspnetcore – ezile

+0

Кроме того, похоже, вы используете Katana. Это не поддерживает 5.x. – ezile

6

Я не знаю, когда и когда это будет исправлено, но я надеюсь, что так оно и будет. Я уже опубликовал эти проблемы на Github site для расширений AAD и на Katana site. Вы можете следить за дискуссиями и прогрессом на этих сайтах, и, если вы этого хотите, вы всегда можете проявить интерес к этому вопросу.

Я не могу понять, как это не рассматривалось как проблема до выпуска. «Обновление до .Net Core» не является разумным решением. У моего приложения нет никаких шансов сделать это в течение долгого времени, как и большинство нетривиальных проектов.

+1

Есть ли конкретная причина, по которой вам необходимо обновить М.IM 5.0? S.IM 4.x - поддерживаемый релиз, который работает с Katana. –

+19

Это тао Нугет. Мне нравится обновлять окно обновлений Nuget. У меня есть sooo много элементов Nuget, добавленных в этот проект, и есть много проектов, над которыми я работаю, что я не могу вспомнить «о, этот элемент является переломным обновлением». Если вы примените его, вы нарушите свое приложение. Я думаю, что лучший подход состоял бы в том, чтобы выпустить отдельный проект Nuget, а не как обновление. Назовите его 5.0 или что-то еще, но не обновление. Это было бы чище. Обновление может сломать проект, но с 5.0 нет никакого количества моего кодирования, которое может его исправить. Так что это не апгрейд; его новый продукт – ChrisW

+1

Xhris, я вас слышу. Мы хотели, чтобы пакеты были логически вместе, поскольку они представляют собой наше предложение IdentityModel for Core. Мы фиксируем Katana для использования версии 5.x. Итак, через пару месяцев все это исчезнет. –

2

Так что сегодня я испытываю такую ​​же проблему. Посмотрев вниз, я думаю, что знаю ответ.

Короче это проблема с проектом Katana (http://katanaproject.codeplex.com/), которые не соответствовали текущим изменениям Windows Azure Active Directory IdentityModel расширения для .Net (https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet)

Для получения более подробной информации, TokenValidationParameters был там в системе .IdentityModel.Tokens.Jwt assembly verion 4.0, но он был удален в версии 5.0. Новый дом для него теперь находится в сборке Microsoft.IdentityModel.Tokens.

Извините, я не могу предоставить исправление, это изменение дизайна, из которого база кода Katana должна быть значительно реорганизована.

+0

Это правильно. Мы работаем над исправлением. Мы понимаем, что это проблема. –

0

Katana в настоящее время не будет работать с 5.x версия IdentityModel. https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet

Однако, есть работа, чтобы исправить это. Сроки еще не установлены.

+2

У меня есть эта проблема, но у меня нет пакета под названием «Катана», были ли авторы достаточно глупы, чтобы назвать пакет иначе, чем имя проекта? Если да, то каково название того, что нужно удалить? Как я могу заставить это работать с 5.1, поскольку я не вижу смысла делать новые реализации старым/устаревшим способом. –

+1

Похоже, что это загрузили 6,22 миллиона человек, и можно предположить, что их проекты также не повезло. Кажется, что нет ни одного примера онлайн-пользователей, использующих эту обновленную версию. Возможно, мне придется задать этот вопрос. :-( –

+0

Katana - это имя разработки для версии asp.net, использующей конвейер OWIN. Это предшественник текущего ядра asp.net. В качестве стажа-студия библиотеки IdentityModel были модифицированы для поддержки Katana. .x версии имеют .Net Стандартные цели. Вы не можете использовать их в отношении отгрузочной версии Katana. В ближайшее время выйдет обновленная версия Katana. –

4

T1; dr - убедитесь, что вы используете версии 4.0 или новее пакетов Microsoft.Owin. *, Таких как Microsoft.Owin.Security.Jwt. На момент написания пакета 4.0 все еще были в предварительном порядке, поэтому вам нужно отметить «Включить предварительную проверку», чтобы увидеть эти обновления в графическом интерфейсе NuGet.


В других ответах упоминалось, существует критическое изменение в System.IdentityModel.Tokens.Jwt с версии 4.0 до 5.0. Это вызвало проблемы, поскольку некоторые пакеты, такие как Microsoft.IdentityModel.Protocols, зависели от версии 5.0, в то время как старые пакеты Katana/OWIN, такие как Microsoft.Owin.Security.Jwt, по-прежнему были жестко запрограммированы в зависимости от версии 4.0.

Хорошей новостью является то, что это being fixed в новой версии Katana 4.0. Пакеты 4.0 (такие как и Cookies) были опубликованы в NuGet как предварительные пакеты и скоро будут доступны в виде стабильных пакетов.

+3

Мы отбросили IdentityModel 5.2.0-preview1 с Katana 4.0-alpha1 на nuget.org. См. https://www.nuget.org/packages/Microsoft.Owin.Security.OpenIdConnect/4.0.0-alpha1 и https://www.nuget.org/packages/Microsoft.IdentityModel.Tokens/5.2.0-preview1- 408290725 –

+0

@BrentSchmaltz Ницца, взволнован, чтобы увидеть ose 4.0 пакеты достигают стабильности! Обновлен мой ответ. –

+0

6 месяцев спустя эти пакеты все еще находятся в предварительном выпуске ... –

Смежные вопросы