Реклама:

Для того чтобы сделать билет «единым» для приложений, нужно синхронизировать некоторые настройки конфигурации. Значения свойств пате и path конфигурационного элемента аутентификации Forms должны быть одинаковы во всех приложениях. Кроме того, ASP.NET выполняет шифрование и обеспечивает защиту целостности билетов, по крайней мере, если вы присвоите настройке protectionLevel значение Ali (что должен делать любой разработчик). Для этих криптографических операций используется машинный ключ. (Более подробную информацию о машинном ключе вы найдете в главе 4.)

По умолчанию для каждого приложения в ASP.NET наследуется новый ключ от главного ключа. Если вы хотите в приложениях совместно использовать билет аутентификации, эти приложения должны использовать один и тот же ключ для шифрования и расшифровки билета (он задается в элементе <machineKey> файла web.config).

<machineKey valirJationKey="27. .6А" decryptionKey="34..14" decryption="AES" validation="SHA1" />

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

ВНИМАНИЕ! Машинный ключ представляет крайне уязвимые данные. Если злоумышленник извлечет значения машинного ключа, он сможет создать билеты аутентификации, которые ваше приложение будет принимать как действительные. Вам следует зашифровать код с помощью настройки ProtectedConfiguration, описанной в главе 4.

После конфигурирования рассмотренных настроек билет становится «принятым на веру» всеми приложениями и прозрачно используется инфраструктурой аутентификации Forms.

Сценарии SSO

В наиболее простом случае на машине имеется множество приложений — каждое с собственной страницей регистрации, и вам нужно, чтобы пользователи, уже аутен-тнфицировагшые в одном приложении, могли переходить к другим приложениям без повторной аутентификации. В этом сценарии выполняются те же шаги конфигурации, которые требуется выполнить для Web-ферм: вам нужно синхронизировать машинный ключ, имя билета и путь cookies во всех приложениях.

Однако вы, возможно, не захотите снова реализовывать аутентификацию во всех приложениях, а предпочтете факторизовать логику аутентификации в центральном «приложении аутентификации». Для этого метода обычно используется три типа архитектуры:

■ приложение аутентификации и остальные приложения находятся на одной машине;

■ приложение аутентификации и остальные приложения находятся на отдельных машинах одного домена;

• приложение аутентификации и остальные приложения находятся на отдельных машинах в разных доменах.

Опишем псе три типа архитектуры.

Приложение аутентификации и остальные приложения находятся на одной машине

Этот довольно простой сценарий показан па рис. 5-23, Синхронизируйте необходимые настройки и в конфигурации аутентификации Forms укажите для атрибута loginUrl абсолютный URL, например, /AuthApp/loginsapx. После успешной аутентификации клиент опять будет перенаправлен к исходному приложению.


⇐ Предыдущая страница| |Следующая страница ⇒