Это своего рода вопрос из двух частей. Итак, я начну с первого, которое приведет ко второму. Я размещаю сайт в GoDaddy, где в корне находится основное веб-приложение. Однако в подпапке я создал второе веб-приложение. Оба из которых используют проверку подлинности с помощью форм с поддержкой членства ASP.NET в общей базе данных. То есть оба используют базу данных aspnetdb. То, что я пытаюсь сделать, это возможность войти в один и, следовательно, войти в оба. Единый вход (SSO), если хотите. До сих пор я обнаружил, что если приложения находятся на одном сервере (экземпляр IIS), они, следовательно, используют один и тот же MachineKey. Из того, что я обнаружил, и из моего понимания проверка подлинности с помощью форм использует MachineKey для генерации билета проверки подлинности. Поэтому никаких изменений не требуется, если имя приложения для провайдеров членства, роли и профиля совпадает.
Пока я точен?
Но я не смог заставить это работать. Таким образом, я попробовал две другие идеи без преобладания.
Я добавил следующее в оба файла Web.config (отдельно, конечно, не вместе).
<machineKey decryptionKey="AutoGenerate"
validation="SHA1" validationKey="AutoGenerate" />
или
<machineKey
validationKey="93A258D47F48AF07AB8BE3EF56C9D32897B9C458F2E14DB6F9AA47D77E40F4CA763D4BD56C2900B507073023F4C43C583A1F7086C2DD327C879368B0449EFB10"
decryptionKey="6BE371E3CDE768B71D0D261370127BAE094984D207EFD4B55FB24384FE1795D1"
validation="SHA1" decryption="AES" />
Сгенерировано из http://aspnetresources.com/tools/machineKey
И пример конфигурации членства
<membership
defaultProvider="SqlProvider"
userIsOnlineTimeWindow="20">
<providers>
<remove name="AspNetSqlProvider" />
<add name="SqlProvider"
type="System.Web.Security.SqlMembershipProvider"
connectionStringName="aspnetdb"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="true"
passwordFormat="Hashed"
applicationName="/" />
</providers>
</membership>
Итак, мой первый вопрос, будет ли это работать, и я на правильном пути? Потому что я не смог заставить это работать.
Следующий вопрос: если это работает, и кто-то должен был загрузить приложение и загрузить его на свой веб-сайт. И если в приложении Web.config указан MachineKey, такой как сгенерированный выше, и они оставляют имя приложения по умолчанию, такое как «/», может ли это быть угрозой безопасности? Это означает, что если человек А загрузил приложение, а человек Б загрузил одно и то же приложение, пользователь мог пройти аутентификацию на одном и, следовательно, быть аутентифицированным при второй установке. Имейте в виду, что человек А и человек Б не имеют никаких отношений, кроме того, что они оба загрузили одно и то же приложение и оставили его с настройками по умолчанию.
Ссылки:
http://msdn.microsoft.com/en-us/library/ff649308.aspx
http://help.ablecommerce.com/faqs/ablecommerce_7/how_do_i_install_to_a_shared_hosting_environment_.htm
http://rtur.net/blog/post/2009/03/30/Using-machineKey-with-ASPNET-Membership.aspx
Использование одной базы данных членства Asp.net с несколькими приложениями Единая регистрация
[Update]
- Я полон решимости найти решение этой проблемы в ближайшее время. Если вы также ищете решение, следите за обновлениями ...