Я посещаю довольно много интернет-ресурсов и часто регистрируюсь в них. Пароли, явки, адреса - после месяца активной виртуальной жизни в голове и записной книжке просто каша...
Иногда я мечтаю, как здорово было бы, если бы можно было зарегистрироваться только на одном ресурсе, а остальные бы обращались за авторизацией туда. Тогда бы я начинал день с регистрации на этом ресурсе, держал бы сессию открытой и как только я заходил на какой-нибудь форум, меня автоматически бы узнавали.
Раньше я думал, что до такого счастья доживут только наши дети, но оказывается, все можно реализовать даже сейчас.
Идея в том, что у пользователя будет только один пароль на одном
ресурсе. Преимущества:
1. Нужно помнить только один пароль.
2. Достаточно только один раз авторизоваться в начале дня при работе в интернете.
3. Если пароль утерян или раскрыт, его нужно менять только в одном месте. Можно
организовать службу идентификации так, что для логина пользователя можно указать
документ подтверждающий личность и в случае кражи пароля звонить в горячую линию
и блокировать запись. Для разблокировки нужно с документом обратиться в службу
поддержки ресурса.
4. Можно иметь несколько логинов - для дел и для развлечений. Таким образом
обеспечивается в нужных случаях анонимность и инкогнито.
5. На сайт автоматически передаются данные, которые все сайты просят вводить
- e-mail пользователя, город, в котором он живет и прочие данные, которые он
готов предоставить по учетной записи.
Технически все можно реализовать уже сейчас. Такие системы уже есть - это Microsoft Passport и Liberty Alliance. Паспорт от Микрософт бесплатен для пользователь, но для владельцев ресурсов требуется достаточно значительная абонентская плата. Думаю, он никогда не появится на дешевых самопальных форумах. Вариант от SUN пока еще не доделан.
В любом случае, это заморские продукты и не мешало бы иметь нашу российскую службу авторизации. Они будут более быстрее работать и не генерировать более дорогой трафик за границу. Можно создать несколько зеркал ресурса (по типу DNS), чтобы в случае проблем на одном сервере регистрироваться на другом.
В качестве демонстрации того, что использовать готовую службу авторизации для программиста проще и надежнее, чем писать свою систему, предлагаю один из способов ее реализации - специалисты по безопасности ресурса могут конечно использовать более надежные системы идентификации.
Например, форум any_forum.ru для авторизации пользователя обращается
на ресурс-привратник auth.ru по ссылке: http://auth.ru?mode=auth;sid=SID;request=REQUEST
где:
AUTH - указывает, что идет обращение с запросом на авторизацию
SID - идентификатор сессии пользователя на форуме
REQUEST - случайный ключ
Если на привратнике пользователь уже авторизован и сессия открыта,
все готово для ответа в форум, иначе привратник выдает пользователю запрос на
авторизацию. Когда пользователь авторизировался, он перенаправляетсяв на страницу
форума: http://any_forum.ru?sid=SID;answer=ANSWER;mode=auth;user=USERNAME
Т.е. в форум передается текущая сессия пользователя в форуме SID,
сообщается в mode, что пришел результат запроса на авторизацию, и передается
ответ ANSWER, получаемый из REQUEST. Движок
форума вычисляет свой ANSWER по REQUEST и сравнивает его с полученным. В случае
совпадения форум авторизирует пользователя под идентификатором USERNAME. Дополнительно
в форум в режиме POST можно передавать публичные данные пользователя - фамилию,
дату рождения и т.п.
Для вычисления ANSWER можно использовать например функцию php crypt: ANSWER=crypt(REQUEST,
USERNAME).
В целях безопасности:
1. Ответ об авторизации должен прийти в течении 5-10 секунд.
2. Если пришел неверный ответ об авторизации, то должен послаться новый REQUEST,
текущий REQUEST блокируется, чтобы исключить подбор ANSWER.
3. Ресурс должен быть очень надежным и крупным, т.к. доверяемая ему информация
весьма ценна.
4. REQUEST не должен никогда повторяться,можно связать его со временем.
Думаю, указанный способ достаточно безопасен. Злоумышленник может
обмануть систему авторизацииследующими способами:
1. Перехватить запрос к привратнику. Но перехватить запрос к определенному ресурсу
практически невозможно.
2. Подобрать answer не получится, не зная request, а request знает только привратник
и срок жизни request очень маленький.
3. Самый простой способ - сэмулировать консоль ресурса-привратника, чтобы пользователь,
не обративший внимание на адрес ресурса, отдал свой пароль. Чтобы этого избежать,
в браузер нужно встроить небольшой скрипт, который начинает мигать, когда пользователь
попадает на страницу аутентификации привратника. Таким образом, если мигание
отсутствует, пользователь не будет вводить пароль.
Владельцы ресурса , таким как yandex.ru или mail.ru могут привлечь
и удержать у себя большое количество пользователей, т.к. регистрироваться они
будут через этот ресурс. Они должны позаботиться:
1. Создать службу поддержки для блокировки ресурсов и связи логинов с документом,
удостоверяющим личность для особо важных логинов.
2. Написать или собрать скрипты для авторизации через их ресурс для наиболее
популярных движков форумов.
Думаю, владельцы авторизуемых ресурсов достаточно скоро оценят все преимущества централизованной авторизации и избавятся наконец от головной боли с авторизацией своих пользователей.
К тому же теперь все пользователи ресурса будут авторизованными и смогут оставить свое сообщение в форуме, даже не регистрируясь в нем, если это поддерживает политика форума.