2014-01-29 2 views
1

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

Каков наилучший подход к реализации этого?

Я собираюсь создать отдельный сервер авторизации, который будет выдавать токены/секреты при регистрации и входе в систему. Он будет иметь API проверки подлинности, который будет использоваться серверами мобильных приложений для проверки запросов.

+0

IMHO вы должны взглянуть на шаблоны единого входа. –

ответ

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

  2. Полузащищенное/может быть разрешено решение: иметь симметричный шифрованный файл cookie, который хранит веб-страницы (и приложения?), И использовать его для авторизации с различными сетевыми службами (которые снова должны проверить cookie для авторизации с помощью службы авторизации, которая знает ключевая фраза используется для шифрования куки)

Я использовал подход # 2 на внутренних системах, но я не уверен, если это целесообразно, чтобы использовать его в в дикой природе - это может создать определенные риски безопасности.

0

Метод аутентификации в каждом приложении подключается к одному и тому же веб-сервису для аутентификации.

2

Существует протокол для обработки этой службы, называемой Центральной службой аутентификации (http://www.jasig.org/cas), или CAS. CAS использует протокол OAuth2, чтобы обеспечить безопасный способ управления процедурой единого знака - у пользователей есть единый логин, который используется через токены и прокси-билеты для аутентификации пользователя в различных приложениях с использованием одного сервера аутентификации CAS. Это процедура, которую я работаю для использования для аутентификации пользователей в нескольких приложениях (мы используем Java с Spring Security и Spring CAS), однако этим летом мы разработали доказательство концепции с Django и внутренним API-интерфейсом компании, в котором мы внедрили процедуру CAS с приложением Django - пользователи, прошедшие проверку подлинности Django, через сервер CAS, который мы запускаем, и вернули их как действительные, прошедшие аутентификацию пользователей Django. Для этого мы использовали промежуточное программное обеспечение django-cas и пользовательскую бэкэнд-библиотеку, которую можно найти здесь: https://bitbucket.org/cpcc/django-cas/overview.

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

Смежные вопросы