Дайджест-аутентификация Pentaho Acegi Security Framework и Ruby on Rails
-
18-09-2019 - |
Вопрос
На данный момент у меня есть приложение Ruby on Rails, которое обслуживает моих пользователей, и отдельное приложение (Pentaho), которое использует Acegi/Spring Security для аутентификации пользователей.
Мне удалось изменить способ аутентификации пользователей Acegi/Spring Security, и теперь он указывает на базу данных моего приложения Ruby on Rails, и я могу нормально аутентифицировать пользователей с помощью входа в систему на основе формы.
Мне было интересно, можно ли перенаправить моих пользователей из моего приложения Ruby on Rails в Acegi/Spring Security от Pentaho и провести их аутентификацию без необходимости заполнения формы входа?(Я НЕ собираюсь использовать CAS/SSO)
Я провел небольшое исследование и увидел, что вы можете использовать:
- Параметры URL, т.е. http://www.domain.com/auth?userid=[имя пользователя]&пароль=[пароль]
- Базовая аутентификация
- Дайджест-аутентификация
Очевидно, что использование метода параметров URL-адреса небезопасно даже через HTTPS, поскольку он передает пароли в виде открытого текста (как и базовая аутентификация), поэтому мое последнее решение — дайджест-аутентификация.
Как мне передать учетные данные пользователя из моего веб-приложения Ruby on Rails в Pentaho, который использует аутентификацию Spring/Acegi и обеспечивает аутентификацию пользователя без необходимости заполнения формы?
Какие изменения мне нужно внести в среду Spring/Acegi?Какую ссылку или метод мне нужно будет создать в Ruby on Rails, чтобы сделать это?
Любая помощь будет оценена по достоинству!
Решение
Приложение (на стороне сервера), в котором пользователь уже вошел в систему, передает идентификатор пользователя другому приложению и получает взамен короткий действующий токен.Это безопасно, поскольку происходит между приложениями.Затем пользователь перенаправляется во второе приложение с токеном.Таким образом мы добились единого входа между двумя приложениями.Мне интересно узнать, достигли ли вы того же самого другими способами.