Членство в ASP.NET с настраиваемым ключом MachineKey для нескольких приложений и рисков безопасности

Это своего рода вопрос, состоящий из двух частей. Итак, я начну с первого, а затем перейду ко второму. Я размещаю сайт в GoDaddy, где в корне находится основное веб-приложение. Однако в подпапке я создал второе веб-приложение. Оба из них используют проверку подлинности с помощью форм, поддерживаемую членством в ASP.NET в общей базе данных. Это означает, что оба используют базу данных aspnetdb. То, что я пытаюсь достичь, - это возможность войти в одну и, следовательно, войти в обе. Единый вход в систему (SSO), если хотите. До сих пор я обнаружил, что если приложения находятся на одном сервере (экземпляре IIS), то они используют один и тот же ключ MachineKey. Из того, что я нашел и насколько я понимаю, проверка подлинности с помощью форм использует MachineKey для создания билета проверки подлинности. Таким образом, никаких изменений не требуется, если имена приложений для поставщиков членства, ролей и профилей совпадают.

Я пока точен?

Но мне не удалось заставить это работать. Итак, я попробовал две другие идеи, но безуспешно. Я добавил следующее в оба файла Web.config (по отдельности, а не вместе, конечно).

<machineKey decryptionKey="AutoGenerate" 
    validation="SHA1" validationKey="AutoGenerate" />

or

<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, как тот, который сгенерирован выше, и они оставляют имя приложения по умолчанию, например '/', может ли это быть угрозой безопасности? Это означает, что если человек A загрузил приложение, а человек B загрузил одно и то же приложение, пользователь может пройти аутентификацию на одном и, следовательно, пройти аутентификацию при второй установке. Имейте в виду, что у человека A и человека B нет никаких отношений, кроме того, что они оба загрузили одно и то же приложение и оставили его с настройками по умолчанию.

Использованная литература:

http://msdn.microsoft.com/en-us/library/ff649308.aspx

http://help.ablecommerce.com/faqs/ablecommerce_7/how_do_a_installs_red_red_https://www.html.com/faqs / >

http://rtur.net/blog/post/2009/03/30/Using-machineKey-with-ASPNET-Membership.aspx

Использование одной базы данных членства Asp.net с несколько приложений Единый вход

[Обновление] - Я полон решимости найти решение этой проблемы в ближайшее время. Если вы также ищете решение, следите за обновлениями ...


person Jeff Willener    schedule 21.10.2011    source источник
comment
Джефф, я так понимаю, что виртуальный каталог на самом деле унаследует параметры аутентификации родителя. Вы пробовали это, не указывая ничего, связанного с аутентификацией, в web.config виртуального каталога (дочернего)?   -  person mikey    schedule 21.10.2011
comment
Вы имеете в виду удаление всех ссылок на членство в web.config для дополнительного приложения?   -  person Jeff Willener    schedule 21.10.2011
comment
Пройдет немного времени, прежде чем я успею попробовать, но обновлю результат.   -  person Jeff Willener    schedule 21.10.2011
comment
Собственно, теперь, когда я думаю об этом, это нарушает намерение иметь возможность войти на любой сайт и, следовательно, войти на оба. :(   -  person Jeff Willener    schedule 21.10.2011
comment
Вы уже хотите, чтобы они использовали одно и то же aspnetdb и имя приложения /, верно? Таким образом, по сути, они одинаковы, вы можете качать разные страницы входа, указав тег аутентификации / форм в web.config виртуального каталога. msdn.microsoft.com/en-us/library/ms178685.aspx msdn.microsoft.com/en-us/library/1d3t3c61.aspx   -  person mikey    schedule 21.10.2011
comment
Да, такая же база данных и такое же имя приложения. Я понимаю, о чем вы сейчас говорите. Одна страница входа на корневой сайт, где у обоих есть тег формы. Хотя, думаю, проблема останется прежней. Спасибо, Майки, я попробую.   -  person Jeff Willener    schedule 21.10.2011