Веб-приложение MVC5, использующее локальную организационную аутентификацию ADFS и разработку на локальном хосте в Visual Studio 2013

Я пытаюсь создать веб-приложение MVC5, настроенное на использование локальной организационной аутентификации (ADFS), как описано Витторио Берточчи

Сначала я создаю новый проект MVC. Затем я меняю аутентификацию на локальную. Установите в качестве локального центра сертификации мою конечную точку метаданных федерации ADFS. Я проверил, чтобы убедиться, что XML-метаданные федерации доступны, и это было так. Я оставляю поле App ID URI пустым, принимая значение по умолчанию. Я сделал и то, и другое, указал значение и оставил пустым.

Затем я вручную настроил приложение проверяющей стороны. Установка URL-адреса пассивного протокола WS-Federation проверяющей стороны: значение https://localhost:44300, предоставленное Visual Studio. Это значение является единственным значением, заданным в качестве идентификатора доверия.

Наконец, я сопоставил 2 типа претензий для хорошей меры; Отображаемое имя и имя участника-пользователя. Все это по ссылке примера.

Затем я запускаю (F5), логин ADFS появляется с общей ошибкой. Я иду на сервер ADFS и обнаруживаю следующую подробную ошибку.

Среда разработки У меня есть 3 сервера и 1 клиент.

  • 1 контроллер домена
  • 1 ЦС-сервер
  • 1 ADFS
  • 1 клиент виндовс 8.

Я продолжаю получать следующее сообщение об ошибке внутри от ADFS

Encountered error during federation passive request. 

Additional Data 

Protocol Name: 
wsfed 

Relying Party: 
https://localhost:44300/ 

Exception details: 
Microsoft.IdentityServer.Web.InvalidScopeException: MSIS7007: The requested relying party trust 'https://localhost:44300/' is unspecified or unsupported. If a relying party trust was specified, it is possible that you do not have permission to access the trust relying party. Contact your administrator for details.
   at Microsoft.IdentityServer.Web.Protocols.WSFederation.WSFederationSignInContext.Validate()
   at Microsoft.IdentityServer.Web.Protocols.WSFederation.WSFederationProtocolHandler.GetRequiredPipelineBehaviors(ProtocolContext pContext)
   at Microsoft.IdentityServer.Web.PassiveProtocolListener.OnGetContext(WrappedHttpListenerContext context)

Любая помощь приветствуется.


person monkeyjumps    schedule 23.06.2014    source источник


Ответы (2)


как упоминалось в первом ответе Vittorio, кажется, что идентификатор проверяющей стороны, отправленный вашим приложением, не соответствует тому, что зарегистрирован в ADFS. Для этого не требуется новая установка vanilla ADFS. Я предлагаю следующее:

  1. Убедитесь, что у вас есть настройка доверия с проверяющей стороной в ADFS для приложения.
  2. Убедитесь, что идентификатор приложения соответствует тому, что вы указали в своем приложении, как показано в сообщении блога Vittorio.
  3. Убедитесь, что URL-адрес возврата правильно задан в доверии с проверяющей стороной ADFS и соответствует настройкам F5 для приложения. Вы можете увидеть снимок экрана в блоге Витторио.

Дайте мне знать, если это сработает для вас.

--Сэм

person SamuelD MSFT    schedule 09.07.2014
comment
Хорошо, спасибо, заработало. Идентификатор действительно был неверным. Однако меня не перенаправляют на настраиваемую страницу входа в ADFS. Когда я запускаю приложение, оно выдает приглашение Windows из браузера. Затем передает меня через приложение. Почему это может быть? - person monkeyjumps; 12.07.2014
comment
Использование Chrome сработало, как и ожидалось. Меня перевели на вход в ADFS по умолчанию, а затем подключили. Отлично, еще раз спасибо всем! - person monkeyjumps; 12.07.2014

похоже, что вы определили доверие RP с помощью https://localhost:44300, но на самом деле вы отправляете https://localhost:44300**/**. Косая черта в конце важна для этого сравнения! :-) Я рекомендую использовать логический идентификатор для каждой области или добавить косую черту в конце вашего доверия RP. ХТ В.

person vibronet    schedule 24.06.2014
comment
начал заново и создал новую среду разработки с двумя доменами, на этот раз companyA и companyB. В компании A domanin я настроил доверие RP, как вы описали, и это сработало. Я нажал F5, и я перешел на следующий URL-адрес: adfs.companya. local/adfs/ls/ со следующей [страницей входа](monkeyjumps.blob.core.windows.net/images/HomeRealmDiscovery.PNG) Затем я выбираю компанию A, а затем снова запрашивает - person monkeyjumps; 26.06.2014
comment
После повторного входа в систему я сначала получаю ошибку Bad Request. , не уверен, почему мне дважды бросают вызов, а затем ошибка должна означать, что мне нужно опубликовать на II и создать новый идентификатор в RP и изменить мой локальный DNS? Я чувствую себя совершенно не в своей тарелке из приведенного примера. Спасибо. - person monkeyjumps; 26.06.2014
comment
Привет, пример описывает простую топологию, в которой есть только одна стандартная ADFS и настройка домена. Проблемы, с которыми вы сталкиваетесь, похоже, больше связаны с инфраструктурой установки, в которой у меня ограниченный опыт. Попробую втянуть в тему кого-нибудь из команды ADFS. - person vibronet; 26.06.2014
comment
Второй домен еще даже не включен. Он появляется, потому что корневой сертификат находится в доверенном корневом органе. мое приложение MVC находится в том же домене (companyA), что и сервер adfs. - person monkeyjumps; 26.06.2014
comment
Я ввожу следующий URL-адрес ‹br/› adfs.companya.local/adfs/ls/idpinitiatedsignon .aspx ‹Br/›, затем мне дважды бросают вызов, я получаю пустой экран, но внутри скрипача я получаю 401 несанкционированную ошибку. Моя ошибка очень похожа на [kilta.sovelto.fi/core/infra/, но мой DNS проверяет, в отличие от его примера. Мой DNS настроен как хост (A) - person monkeyjumps; 02.07.2014
comment
Привет, в конце концов, вы получили ответ от ADFS? - person vibronet; 03.07.2014
comment
Нет, но я попробую еще раз и настрою новую ванильную среду. Затем повторите свой пример. У вас есть ссылки на то, как вы настроили свою среду? - person monkeyjumps; 03.07.2014
comment
Я не знаю, извини. Я не устанавливаю свои собственные ADFS, я плохой администратор :-) Извиняюсь за задержку. Я пропингую их снова. спасибо - person vibronet; 04.07.2014