Как стать автором
Поиск
Написать публикацию
Обновить

Внешняя аутентификация для веб приложения

Время на прочтение2 мин
Количество просмотров1.6K
Количество веб приложений растет с каждым днем и каждое из них включает управление юзерами / аутентификацию / авторизацию. Все чаще веб сайт пользователя — это набор интегрированных веб приложений, а не одна цмс-ка. Возникает вопрос — как в таких случаях решается вопрос с единой аутентификацией пользователей между этими приложениями?

Вопрос возник не случайно. Сейчас занимаюсь проработкой требований к продукту (веб приложение) и понимаю, что внешняя аутентификация — must have для продукта. Есть ли стандартные варианты для такой аутентификации?

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

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

Вначале выпишем все юс кейзы, которые хоть как-то связаны с аутентификацией:
1. Переход в приложение пользователя, аутентифицированного в другом приложении
2. Login
3. Logout
4. Register
5. Remember password/reset password
6. Profile password change

1. «Переход в приложение пользователя, аутентифицированного в другом приложении». Чтобы автоматически аутентифицировать такого пользователя внешнее приложение должно передать username и authentication token, причем auth token — самая интересная часть. Этот токен должен быть специфичным для username, external application instance, my application instance (т.е. не подходить к другой паре external app instancem, my app instance). Механизм генерации / проверки такого токена можно сделать на базе криптографии с открытым ключом. Еще как вариант: my application instance может сделать http запрос к external app, чтобы проверить этот токен, но этот метод более ресурсоемкий.
2. Login — my application instance должен делать редирект (или сразу post с login/password) на сторону external app, передавая external app помимо всего еще ReturnURL — урл для возврата/редиректа в случае успешной аутентификации
3. Logout — аналогично login, только параметров меньше
4. Register — аналогично login
5. Remember password — аналогично login
6. Profile password change — думаю имеет смысл блокировать этот функционал в my app и давать ссылку на change profile во внешнем приложении

Все это конечно здорово, но сильно пахнет изобретением велосипеда. Может быть у хабровчан есть примеры reference implementations для решения проблем с внешней аутентификации для веб приложений?
Теги:
Хабы:
Всего голосов 6: ↑4 и ↓2+2
Комментарии5

Публикации

Ближайшие события