Подтвердить что ты не робот

ACS установлен, но приложение MVC 4.0 все еще перенаправляет и не находит login.aspx

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

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

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

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

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

Наконец-то я получил все, чтобы работать. Ключ должен был удалить ссылки WebMatrix.WebData​​strong > , поскольку мне не нужно было выполнять собственный аут. Из Заметки о выпуске MVC4.

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

4b9b3361

Ответ 1

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

Найдите аутентификацию node.

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

<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 node внутри него:

<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>

Если "realm" является действительным URL-адресом для приложения Realie Party. И requireHttps = "false" - это упрощение процесса разработки.

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