Здравствуйте. Появилась необходимость сделать единую авторизацию на несколько веб-проектов.
Делаю один сервер auth — навроде яндексовского паспорта — через который пользователь авторизуется на всех дочерних ресурсах.
В общем-то технология не нова и используется довольно часто, но почему-то подробных описаний в Сети я почти не нашёл. Общие схемы есть, но базовый функционал я сделал, остаются нюансы. Посещаемость намечается большая, соответственно надо предусмотреть всё по нагрузке и по защищённости.
В общем, эти детали тоже по большей части ясны, кроме некоторых, например:
— Как лучше всего сделать междусайтовое взаимодействие? OpenID мотыжит туда-сюда данные хттп-запросами, это неинтересно, потому что медленно (или это не настолько критично, как считаете?), если идти по его стопам — то дочерний ресурс должен проверять какой-то уникальный хеш, отдаваемый после логина/логаута auth-сервером, хттп-запросом (понятно напрямую, без участия пользователя). Это и вроде как флексибл, но с другой стороны — наверняка можно сделать по-другому, например использовать shared-базу для хранения авторизованных-сейчас пользователей. Это вроде как шаг к производительности, но встаёт другой вопрос — действительно ли это будет так быстро? Можно использовать memory-таблицы или memcachedb, но смущает тот факт, что при перезапуске демонов все активные сессии сбросятся. Если использовать персистентное хранилище, встаёт вопрос о производительности опять же. В общем, под конец рабочего дня решил вынести вопрос на суд общественности — может, замылилась мысль, и есть какое-то более очевидное, оригинальное и красивое решение?
d> S>Пользуй OpenID
d> Не подходит. Слишком медлительное, слишком "широкое". Его ни яндекс не пользует, ни гугл, ни жж для своих кросс-авторизаций/аутентификаций.
Приветствую, drosan, вы писали:
d> В любом случае уже почти доделал всё, жалко, что так мало народу в курсе этих дел.
Поэтому и мало крутится, что народ свое постоянно выдумывает.
Здравствуйте, drosan, Вы писали:
D>OpenID не подходит. Слишком медлительное, слишком "широкое".
Слишком медлительное — это полсекунды не подождать, пока сервера обменяются нужной инфой?
D>Его ни яндекс не пользует, http://openid.yandex.ru/ D>ни гугл, http://openid-provider.appspot.com/ D>ни жж для своих кросс-авторизаций/аутентификаций. http://www.livejournal.com/openid/
D>В любом случае уже почти доделал всё, жалко, что так мало народу в курсе этих дел.
Это не народ не в курсе, а вы
В общем задача очень простая и понятная. Разбивается на два этапа — кто будет эти аккаунты выдавать и кто будет эти аккаунты проверять.
Для первой задачи поднимаете свой OpenID сервер.
Для второй задачи прикручиваете везде где надо возможность аутентификации по OpenID с того сервера.
И не надо извращаться.
Чтобы ваш последователь, на этой работе, не думал "работал тут один самородок, блин. нет чтобы сделать по-человечески. сделал хрень какую-то, а мне теперь разбираться".
Здравствуйте, Evgolas, Вы писали:
E>Здравствуйте, drosan, Вы писали:
D>>OpenID не подходит. Слишком медлительное, слишком "широкое". E>Слишком медлительное — это полсекунды не подождать, пока сервера обменяются нужной инфой?
D>>Его ни яндекс не пользует, E>http://openid.yandex.ru/ D>>ни гугл, E>http://openid-provider.appspot.com/ D>>ни жж для своих кросс-авторизаций/аутентификаций. E>http://www.livejournal.com/openid/
D>>В любом случае уже почти доделал всё, жалко, что так мало народу в курсе этих дел. E>Это не народ не в курсе, а вы
E>В общем задача очень простая и понятная. Разбивается на два этапа — кто будет эти аккаунты выдавать и кто будет эти аккаунты проверять.
E>Для первой задачи поднимаете свой OpenID сервер. E>Для второй задачи прикручиваете везде где надо возможность аутентификации по OpenID с того сервера.
E>И не надо извращаться. E>Чтобы ваш последователь, на этой работе, не думал "работал тут один самородок, блин. нет чтобы сделать по-человечески. сделал хрень какую-то, а мне теперь разбираться".
вот жеж бестолковые яндексы-гуглы-яху-все-остальные... вы им тоже расскажите, чтоли, что они велосипедисты и бездари, и что надо везде-везде использовать openid для внутренних сервисов.
Здравствуйте, drosan, Вы писали:
D>вот жеж бестолковые яндексы-гуглы-яху-все-остальные... вы им тоже расскажите, чтоли, что они велосипедисты и бездари, и что надо везде-везде использовать openid для внутренних сервисов.
А вы компания по масштабу сопоставимая с ними? Или лучше — обладающая такими же ресурсами на разработку отладку и поддержку собственной системы? Или у вас такие же нагрузки вы боитесь за производительность?
Понятно, что желание писать велосипеды из разработчиков никуда никогда не денется, но надо же знать меру.
Здравствуйте, Daevaorn, Вы писали: D>А вы компания по масштабу сопоставимая с ними? Или лучше — обладающая такими же ресурсами на разработку отладку и поддержку собственной системы? Или у вас такие же нагрузки вы боитесь за производительность?
D>Понятно, что желание писать велосипеды из разработчиков никуда никогда не денется, но надо же знать меру.
Нагрузки очень высокие. Плюс к тому опенайди в силу некоторых причин не так удобно.
Здравствуйте, drosan, Вы писали:
D>вот жеж бестолковые яндексы-гуглы-яху-все-остальные... вы им тоже расскажите, чтоли, что они велосипедисты и бездари, и что надо везде-везде использовать openid для внутренних сервисов.
Слушайте, во-первых мне глубоко все равно, как вы будете делать свою задачу.
Я сказал про наиболее оптимальный способ. Охота делать по-своему — ради бога.
А насчет распространенности, удобности OpenID — лично я у себе на блоге http://evgolas.ru его поднял, и везде в других сервисах теперь его использую и доволен как слон.
Мне не надо заводить везде кучу аккаунтов. Я везде представляюсь как evgolas.ru, вот и все.
И в жж, и в блогспоте могу комментарии оставлять, и даже френдить там меня могут — все работает.
С другими сервисами тоже никаких проблем.
С другой стороны, недавно сделал игру http://RollerQuest.ru, и в ней, уже для авторизации пользователей, тоже поднял OpenID.
Тоже все ок.
Ну а вы делайте по-своему, тем более если начальство позволяет. Какая вам разница по большому счету?
Задачу вы сделаете, пусть по-своему; работать оно видимо будет; зарплата идет.
Ну значит все отлично.