Как пропустить ASP.Net форма аутентификации родительского веб-сайта на некоторых ASP.Net Действие MVC дочернего веб-сайта

#c# #asp.net #asp.net-mvc #iis

#c# #asp.net #asp.net-mvc #iis

Вопрос:

У меня есть ASP.NET Веб-сайт MVC, который размещен в дочернем каталоге другого веб-сайта, который защищен с помощью формы входа, как показано ниже:

 <domain>/parent          --asp.net 2.0, with login form (standard form auth)
<domain>/parent/mysite   --asp.net mvc 4.0
server: IIS 6
  

для входа на mysite веб-сайт пользователь должен пройти форму входа parent на веб-сайт. все в порядке, пока мы не включим приложение twilio mysite и не получим общедоступный доступ к twiml <domain>/parent/mysite/twilio/twiml . /twilio это область, /twiml это контроллер.

я попробовал следующую конфигурацию в /mysite web.config, но она не работает.

 <location path="~/parent/mysite/twilio">
  <system.web>
    <authorization>
      <allow users="*"/>
    </authorization>
  </system.web>
</location>
  

Редактировать

у меня нет контроля / доступа для изменения кода / конфигурации на родительском веб-сайте.

есть идеи, как заставить это работать?

Ответ №1:

Родительское приложение имеет аутентификацию форм. поэтому он создает зашифрованный файл cookie для браузера клиента, если бы вы могли расшифровать этот файл cookie в своем дочернем приложении, тогда дочернее приложение могло бы проверить, должен ли быть предоставлен доступ.

Вышесказанное делает много предположений, главным образом, о том, что вы выполняете стандартную аутентификацию Microsoft forms, и, если вам повезет, также используете стандартных поставщиков членства Microsoft.

Чтобы вы могли расшифровать файл cookie, вы должны установить machineKey одинаковым в обоих приложениях, объясняет этот блог.

Я думаю, вам, возможно, придется обновить ваше приложение 2.0, но я не знаю.

Комментарии:

1. спасибо за ваш ответ. да, я использую стандартную аутентификацию Microsoft forms. я перешел по предоставленной вами ссылке, но все еще не понимаю, подходит ли она мне. куда я должен поместить код для проверки и предоставления доступа? потому что я думаю, что форма входа отображается, не касаясь дочернего кода. нет?

2. Я не знаю asp.net 2.0 достаточно хорошо, однако для меня с 4 дочерними приложениями MVC 4.0 я просто использовал одну и ту же базу данных членства для каждого дочернего приложения (web.config) defaultProvider …… и установил для каждого machineKey одинаковый. Мне не нужно было писать код. Я думаю, вы найдете это таким же, как при использовании поставщика членства MS. Но я думаю, вам придется обновить код 2.0, чтобы использовать 4.0 esp. для поставщика членства.