Как можно, чтобы несколько приложений использовали одну и ту же систему аутентификации? - PullRequest
0 голосов
/ 29 января 2009

Мне нужно собрать несколько Rails-приложений для одного клиента. Я хотел бы предоставить им одинаковую систему аутентификации пользователей, чтобы пользователям не приходилось запоминать отдельные учетные данные для каждого приложения. Это сугубо внутренние приложения. OpenID не подходит для этой организации.

Я подумываю о создании центрального приложения Rails для обработки аутентификации. Другие приложения будут принимать предоставленный идентификатор пользователя и пароль и отправлять запрос приложению auth и возвращать, возможно, строку YAML с описанием пользователя и его ролей.

Это разумный подход?

Есть ли стандартное решение этой проблемы, о котором я должен знать?

(Обратите внимание, что из-за организационных ограничений я должен решить это самостоятельно, используя один сервер RedHat Linux 5 под управлением MySQL, Apache и Rails.)

Ответы [ 6 ]

3 голосов
/ 29 января 2009

Звучит разумно для меня. Я мог бы настроить приложение аутентификации самостоятельно, как вы описываете, а затем использовать ActiveResource в клиентских приложениях для доступа к аутентификации в качестве веб-службы. По сути, вы можете иметь свою собственную систему в стиле OpenID.

Если вы раньше не использовали ActiveResource, Railscasts 94 и 95 - хорошее место для старта.

2 голосов
/ 29 января 2009

Похоже, что вы действительно ищете систему с единым входом, а не систему общих учетных данных. Ключевое отличие состоит в том, что с последним пользователь должен будет повторно пройти аутентификацию для каждого приложения, тогда как с первым он должен выполнить вход только один раз, а затем плавно перемещаться между приложениями.

К сожалению, это немного поработало, чтобы интегрировать это в ваши приложения rails. Вот отличная отправная точка: http://www.ja -sig.org / продукция / саз /

1 голос
/ 05 февраля 2009

У меня есть сумасшедшее решение для этого, я подумывал о чем-то своем, что мне нужно сделать вот так.

В конфигурации по умолчанию для Rails он отправляет данные сеанса конечному пользователю в виде файлов cookie. По большей части вы должны положить почти ничего в сеансе, за исключением личности пользователя, который вошел в систему и прошел проверку подлинности, верно? Хорошо, а что, если каждое приложение, которое вы хотели видеть при входе в систему, использовало один и тот же секретный ключ в своем config / environment.rb? Это строка из примерно 120 символов, которая используется для подписи файла cookie, чтобы пользователь не мог изменить файлы cookie и отправить их обратно, не будучи пойманным. Если бы у каждого приложения в вашей группе был один и тот же секретный ключ И , то все они находились в одном домене, тогда все приложения получали бы один и тот же файл cookie, и все полагали бы, что они отправили его. Каждый сказал бы: «Да, это пользователь № 252. Я сам ввел этот номер пользователя в сеанс, чтобы я знал, что это он. Получая его обратно, я знаю, что он / она вошел в систему, и я могу использовать его для поиска его / ее данные. "

Примечание: полное раскрытие, я не пробовал это, но у меня есть все основания полагать, что это будет работать.

1 голос
/ 29 января 2009

OpenID был создан для децентрализации, так что вы могли бы на самом деле разместить своего собственного поставщика OpenID для внутреннего использования. Я не вижу необходимости изобретать велосипед, если вы едете по аналогичному маршруту.

1 голос
/ 29 января 2009

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

Если вы хотите стать модным, вы можете написать API для вашего Rails-приложения (аутентификации), используя HTTParty , и поделиться им с другими.

0 голосов
/ 30 января 2009

Не похоже, что организация слишком большая, но если у них есть каталог LDAP, вы можете использовать его для учетных данных. Хотя, как уже упоминалось выше, это не решит проблему, связанную с тем, что пользователю необходимо индивидуально подписываться на каждое приложение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...