#asp.net
#asp.net
Вопрос:
Я внедрил единый вход, прочитав эту статью:
http://www.codeproject.com/KB/web-security/aspnetsinglesignon.aspx
Однако у меня есть вопрос с точки зрения расширяемости. Будет ли метод, показанный выше, работать, если я размещу 1-е приложение на 1 машине и 2-е приложение на другой машине. На данный момент у меня нет 2 разных серверов, иначе я бы проверил это сам. У кого-нибудь есть какой-нибудь опыт?
Спасибо.
Ответ №1:
Да, это будет работать до тех пор, пока ваши ключи шифрования и проверки, определенные в machine.config на обоих серверах, абсолютно одинаковы. Если вы забудете об этом, это не сработает, поскольку файл cookie, зашифрованный на одном сервере, не будет расшифрован на другом сервере (ах).
В статье предлагается поместить эти ключи в Web.config. Это допустимый подход, но если вам нужен единый вход на нескольких веб-сайтах, вероятно, лучше всего определить его в machine.config
при условии, что у вас есть контроль над этим и все ваши приложения на одном сервере предназначены для совместного использования этой функциональности.
Ответ №2:
Помимо совпадения ключей шифрования и проверки, вам также необходимо, чтобы имя файла cookie было идентичным на обоих компьютерах.
Если ваши приложения и серверы могут представлять собой сочетание .net3.5 /.net4.0 и iis6 / iis7, вы также должны явно указать алгоритм хэширования. Корпорация Майкрософт внесла кардинальное изменение с версии 3.5 на 4.0, изменив алгоритм хэширования по умолчанию с SHA1 на SHA256. Это описано здесь:
но, по сути, вы, вероятно, захотите, чтобы в вашем web.config или machine.config было следующее:
<system.web>
<machineKey validation="SHA1" />
...
</system.web>
<system.web>
<membership defaultProvider="myMembership" hashAlgorithmType="SHA1">
...
</system.web>