ACS установлен, но приложение MVC 4.0 по-прежнему перенаправляет и не может найти login.aspx

Первый пост здесь, в stackoverflow, но мне нравится сайт!...

Я успешно создал полностью функционирующее приложение гибридной модели Azure с использованием MVC 4. Опубликовано и отлично работает. Теперь я хочу добавить ACS для авторизации на свой сайт. Я выполнил все шаги но когда я запускаю приложение в симуляции, оно не может перенаправить на ACS и предлагает страницу с сообщением о том, что не может найти login.aspx.

Я создал простое решение для веб-сайта, чтобы доказать, что мой ACS настроен правильно и работает нормально. Я заметил, что файлы web.config двух решений сильно различаются.

Кто-нибудь еще пробовал это сделать? Любая помощь будет оценена по достоинству.

--------- Решение -----------

У меня наконец все заработало. Ключевым было удаление ссылок WebMatrix.WebData, поскольку мне не нужно было выполнять собственную аутентификацию. Следующее взято из примечаний к выпуску MVC4.

Когда WebMatrix.WebData.dll включается в каталог /bin приложений ASP.NET MVC 4, он принимает URL-адрес для проверки подлинности с помощью форм. Добавление сборки WebMatrix.WebData.dll в ваше приложение (например, путем выбора «Веб-страницы ASP.NET с синтаксисом Razor» при использовании диалогового окна «Добавить развертываемые зависимости») переопределит перенаправление входа в систему проверки подлинности на /account/logon, а не на /account /login, как и ожидалось контроллером учетных записей ASP.NET MVC по умолчанию.


person barnesbuilt    schedule 23.04.2012    source источник
comment
Хотел бы я проголосовать за это дважды. Избавил меня от мучений, пытаясь понять, почему моя реализация ACS внезапно вышла из строя.   -  person Jude Fisher    schedule 08.08.2012
comment
У меня такая же проблема в VS2012 в Windows 8 ... больше нет «Добавить ссылку STS» ... теперь это идентификация и доступ ... и это не работает!   -  person markti    schedule 03.02.2013
comment
У меня такая же проблема, и ваш пост делает мой день   -  person Thai Anh Duc    schedule 04.03.2013


Ответы (1)


Откройте файл web.config.

Найдите узел аутентификации.

Измените его с:

<authentication mode="Forms" />

To:

<authentication mode="None" />

Пишите сюда, если не помогло, и что получилось после изменений в web.config.

В качестве дополнительного вопроса — как вы добавили ссылку на пространство имен ACS — через «щелчок правой кнопкой мыши -> Добавить ссылку STS» или вручную изменили файл web.config?

Убедитесь, что необходимые модули зарегистрированы на веб-сервере:

  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
      <add name="ClaimsPrincipalHttpModule" type="Microsoft.IdentityModel.Web.ClaimsPrincipalHttpModule, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="managedHandler" />
      <add name="WSFederationAuthenticationModule" type="Microsoft.IdentityModel.Web.WSFederationAuthenticationModule, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="managedHandler" />
      <add name="SessionAuthenticationModule" type="Microsoft.IdentityModel.Web.SessionAuthenticationModule, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="managedHandler" />
    </modules>
   ...
 </system.webServer>

Также убедитесь, что у вас есть раздел microsoft.identityModel и в нем есть узел federatedAuthentcation:

<federatedAuthentication>
        <wsFederation passiveRedirectEnabled="true" issuer="https://[your_namespace].accesscontrol.windows.net/v2/wsfederation" 
                      realm="http://127.0.0.1:81/" requireHttps="false" />
        <cookieHandler requireSsl="false" />
</federatedAuthentication>

Где "область" является допустимым URL-адресом для Приложения Настоящей Стороны. А requireHttps="false" для упрощения процесса разработки.

Когда вы отлаживаете его локально, убедитесь, что вы запускаете облачный проект (который использует IIS), а не веб-проект (который будет использовать Cassini/webdevserver, который не понимает раздел system.webServer!)

person astaykov    schedule 23.04.2012