Архитектура для аутентификации / авторизации мобильных и веб-пользователей

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

Требования / предположения

  1. Мобильные пользователи должны иметь возможность использовать собственное приложение без входа в систему, в том числе для добавления контента (отметка избранного, загрузка фотографий и т. д.).
  2. Мобильный пользователь должен безопасно и однозначно аутентифицироваться в веб-сервисе даже без указания учетных данных.
  3. Мобильный пользователь может иметь несколько устройств, о которых не будет знать. друг друга.
  4. Мобильный пользователь должен иметь возможность Регистрироваться / Войти, что должно переводить любой контент в собственность учетной записи. Эта «синхронизация» должна происходить с каждой учетной записью, которая впоследствии входит в систему.
  5. Не имеет значения, была ли создана учетная запись на мобильном устройстве или в Интернете.

Рассматриваемые архитектуры

  1. НЕТ РУБАШКИ, НЕТ ОБУВИ, НЕТ ВХОДА = НЕТ ВЗНОС. Требовать входа в систему, чтобы размещать любой контент. Это избавляет от необходимости «синхронизировать» учетные записи устройств с основной учетной записью. Просто потребуйте одно имя пользователя / пароль + токены, чтобы устройства могли входить в систему. Объекты сервера: Пользователь, Роль
  2. Самоаутентификация на нескольких устройствах. Сервер согласовывает с устройством и передает ему учетные данные, которые устройство хранит. Каждое устройство само-аутентифицируется и связывается с анонимной учетной записью до тех пор, пока не произойдет Регистрация / Вход. Если происходит регистрация, анонимная учетная запись преобразуется в известную. Если происходит вход в систему, содержимое анонимной учетной записи перемещается в известную учетную запись, а затем выбрасывается. Устройства, которые теряют данные само-аутентификации, получат новые данные аутентификации, а предыдущая анонимная учетная запись будет заброшена (а затем, надеюсь, позже выброшена) и не подлежит восстановлению, поскольку она никогда не была преобразована в известную учетную запись. Объекты сервера: Пользователь, Роль, Устройство

Как вы думаете, какое решение является хорошим? Один из них, или что-то еще?

7
задан Kevin Elliott 17 November 2010 в 02:38
поделиться