2013-03-24 2 views
4

Я пытаюсь обмениваться формами auth из корневого приложения в подпрограмму, запущенную в виртуальном каталоге. У меня возникают проблемы с аутентификацией на дочернем сайте.Аутентификация форм через виртуальные каталоги

В родительском приложении все работает так, как ожидалось.

У меня есть следующие настройки:

Родитель приложения:

  • URL: http://localhost:1336/
  • <forms loginUrl="~/account/sign-in" protection="All" timeout="30" name=".MYAPPLICATION" path="/" requireSSL="false" slidingExpiration="true" cookieless="UseDeviceProfile" enableCrossAppRedirects="true" defaultUrl="/" />

Виртуальный каталог:

  • URL: http://localhost:1336/subsite
  • <forms loginUrl="/account/sign-in" protection="All" timeout="30" name=".MYAPPLICATION" path="/" requireSSL="false" slidingExpiration="true" cookieless="UseDeviceProfile" enableCrossAppRedirects="true" defaultUrl="/" />

Когда я пытаюсь к http://localhost:1336/subsite я получаю следующий поток:

  • GET для http://localhost:1336/subsite -> 302/счет/Sign- in? ReturnUrl =% 2fsubsite (выглядит нормально)
  • Ent эр пользователя/пароль
  • POST в http://localhost:1336/account/sign-in?ReturnUrl=%2fsubsite -> 302/подсайт (велика Auth выглядит как его успешно)
  • GET для http://localhost:1336/subsite -> 302/счета/входа в ReturnUrl =% 2fsubsite (IE дочерний сайт не думает его подлинности)

Также я могу увидеть печенье в списке в браузере (так что его на самом деле есть)

Что у меня получилось неправильным в моей конфигурации, что останавливает мой дочерний сайт от совместного использования родительского cookie?

Я бегу это на IISExpress

+2

вы установили общий MachineKey в web.config? –

+0

@ davea Я понимаю, что это требуется только в том случае, если сайты находятся на разных физических машинах. Они оба находятся в моей dev-блоке. Разве это не так? –

+0

Я не думаю, что это правда. Я работаю над проектом, где верно обратное. 1 хост, основной и поддомен (админ и клиент), и мы НЕ ДОЛЖНЫ соблюдать подписки, чтобы сохранить деление. Нам не приходилось настраивать это поведение. Это было по умолчанию. Эрго, я полагаю, что хостинг с одной машины не имеет значения. –

ответ

6

В ваших файлах web.config, установите общий ключ машины между проектами, так что ключи 2 доменов доля проверки и дешифрования.

пример:

<machineKey validationKey="21F090935F6E49C2C797F69BBAAD8402ABD2EE0B667A8B44EA7DD4374267A75D7" 
decryptionKey="ABAA84D7EC4BB56D75D217CECFFB9628809BDB8BF91CFCD64568A145BE59719F" 
validation="SHA1" 
decryption="AES" 
/> 
+0

Спасибо, так же, как FYI, я использовал 'validationKey =" AutoGenerate "decryptionKey =" AutoGenerate ", чтобы избежать необходимости генерировать ключи самостоятельно. Кажется, что это хорошо работает на той же машине (но я предполагаю, что может потерпеть неудачу, если на разных машинах) –

+0

@LukeMcGregor Согласовано, что следует упомянуть. Я собираюсь вернуться к этому и убрать свой ответ, когда у меня будет время. –

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