Android SSO (единый вход) для приложения - PullRequest
15 голосов
/ 27 августа 2010

Существует ли какой-либо бесплатный механизм единой регистрации для Android, который изящно работает с не-веб-приложениями?Скажем, что-то вроде ...

  1. Вы запускаете мое приложение и используете его, пока оно не сделает запрос от сервера приложений, который требует аутентификации.Он отвечает на этот запрос случайным токеном, который сервер будет связывать с вами в течение короткого времени.

  2. Приложение предоставляет вам поле имени пользователя, поле пароля и кнопку отправки.

  3. Вы вводите свое имя пользователя и пароль.Затем приложение перенаправляет ваше имя пользователя и хешированный пароль вместе с токеном, сгенерированным сервером приложений, в службу входа в систему.

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

  5. Приложение передает подписанный токен серверу.

  6. Сервер проверяет подпись, удостоверится в том, что она действительна и подписана уполномоченным им органом, и действует так, как если бы пользователь предоставил ИТ-отделу действительное локальное имя пользователя и пароль вместо этого.

Я подозреваю, что просто теряюсь в номенклатуре, но у меня сложилось впечатление, что все обычные провайдеры единого входа - Twitter, Facebook и т. Д. - разрешают пользователям входить в систему только с помощью обычного браузера.и что вам либо не разрешено делать то, что я описал, либо они делают что-то, что фактически делает невозможным что-либо, кроме обычного браузера (например, динамическое создание формы входа через Javascript, чтобы разработчики не пытались использовать ихсобственные приложения в качестве фасада входа в систему).

В качестве альтернативы, существует ли какой-либо рабочий процесс, такой как ЭТО ...

  1. Вы запускаете мое приложение и используете его, пока веб-служба не потребует от вас входа в систему. Сервер приложений создает токен и возвращает его в приложение.

  2. Приложение порождает новый браузер через намерение, которое отправляет вас на веб-сайт провайдера входа в систему, передавая токен через браузер (и, в конечном счете, провайдеру) через намерение как формула POST.

  3. Вы входите в систему с помощью окна браузера, и окно браузера закрывается - вы возвращаетесь в мое приложение.

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

Ответы [ 3 ]

0 голосов
/ 15 апреля 2018

То, что вы описали в разделе Alternatively, выглядит как Код авторизации с использованием пробного ключа для обмена кодами (PKCE) Предоставление OAuth 2.0

https://tools.ietf.org/html/rfc7636

Поток следующий:
1. Ваше приложение генерирует случайный ключ (code_verifier) и его преобразованное значение (code_challenge) и переходит на сервер авторизации с code_challenge в качестве параметра
2. Сервер авторизации перенаправляет обратно в ваше приложение с кодом авторизации
3. Ваше приложение отправляет authorization_code и code_verifier серверу авторизации для получения токена авторизации
4. Сервер использует authorization_code и code_verifier (у него уже есть code_challenge, поэтому он может проверить правильность code_verifier), а затем возвращается в ваше приложение с токеном.

С практической стороны вы можете использовать что-то вроде Auth0 для реализации этого в вашем приложении.

0 голосов
/ 24 апреля 2019

Используйте Диспетчер учетных записей Android для единого входа.

Предоставление ссылок ниже только для знаний.Вы должны копаться в менеджере аккаунта.
Разработчик Android: https://developer.android.com/training/id-auth
Блог с примером: https://www.zoftino.com/android-account-manager-&-create-custom-account-type

0 голосов
/ 12 декабря 2017

Вы пробовали или думаете об использовании Firebase? https://firebase.google.com/docs/auth/?hl=es-419

У него есть несколько полезных инструментов, вы также можете войти с несколькими социальными коннекторами и именем пользователя / паролем, и они предоставляют библиотеку для интеграции всего пользовательского интерфейса и потока сервера, они даже используют для вас Google Smart Lock.

Взгляните на https://github.com/firebase/FirebaseUI-Android Я использовал его в личном проекте и сэкономил мне много времени.

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