Единый вход с использованием Guid - PullRequest
2 голосов
/ 23 августа 2010

Как я могу использовать Guid для реализации единого входа в одном домене? Я не могу использовать сеансы, так как различные веб-приложения открываются в новых окнах, следовательно, теряют сеанс.

Используемая технология: ASP.net 3.5, архитектура MVC2, C #.

1 Ответ

2 голосов
/ 24 августа 2010

Вы должны иметь возможность использовать cookie и получать к нему доступ из любого приложения, работающего в том же домене. Если другие веб-приложения находятся на поддомене, вам необходимо установить Domain файла cookie, например:

Response.Cookies("CookieName").Domain = ".mydomain.com" 

Если сайты существуют в интрасети, и все пользователи вошли в Windows с уникальной учетной записью, вы можете включить проверку подлинности Windows и прочитать их имя пользователя Windows из их веб-запроса, чтобы определить пользователя.

Изменить для уточнения: Пусть каждый сайт прочитает куки. Вы можете определить, вошел ли пользователь в систему или нет, основываясь на существовании файла cookie, которым можно управлять, установив срок действия файла cookie.

Если вы хотите сделать это более изощренным (вероятно, существуют проблемы безопасности, связанные с использованием исключительно куки-файлов), вы можете сохранить GUID в базе данных и попросить каждую страницу выполнить поиск GUID, который они передают. является действительным. Отсюда, однако, вы хотите управлять проверенным в базе данных идентификатором GUID, зависит от вас (сравните отметки времени и т. Д.).

Возможно, вы захотите сохранить дополнительную информацию в Cookie, чтобы использовать ее для проверки. Например, вы можете сгенерировать случайную строку и сохранить ее с вашим GUID в базе данных. Выполните однонаправленное шифрование для этой строки и сохраните его в Cookie, когда вы изначально сохраните его. Таким образом, вы можете сравнить это значение при проверке, чтобы убедиться, что файл cookie действителен.

...