2014-09-12 2 views
2

Я создаю приложение для телефона. Процесс авторизации должен быть следующим образом. Когда пользователь не войдет в систему, ему будет предложено ввести номер телефона (например, в WatsApp, Viber и т. Д.), А после того, как он войдет в номер телефона, SMS-сообщение будет отправлено пользователю с 8-значным кодом подтверждения. Когда пользователь вводит код, для него создается токен доступа OAuth2 и токен обновления, и 8-битный код подтверждения удаляется из базы данных. Если пользователь выходит из системы, ему необходимо снова выполнить тот же процесс.Создание пользовательского OAuth2 Grant Type

Я хочу использовать метод авторизации пароля, так как я являюсь владельцем ресурса. Однако, поскольку у меня нет пароля во время процесса аутентификации, я действительно не знаю, с какими параметрами нужно создать токен для него. Хорошей практикой является создание нового типа предоставления oauth2 - назовите его «confirm_code», и его параметрами будут client_id, client_secret, username и confirm_code?

ответ

1

Используйте OAuth 2.0 «Credentials Credentials Credentials», согласно спецификации на http://tools.ietf.org/html/rfc6749. Ваш идентификатор пользователя - это номер телефона, пароль - 8-значный код подтверждения, который вы им отправили.

Звонок для регистрации номера телефона, который вызывает отправку SMS, явно не должен быть аутентифицирован.

В качестве альтернативы используйте обычный «Допуск на авторизационный код». На странице входа в систему выполните необходимые шаги. Сначала попросите номер телефона и отправьте SMS-сообщение. Затем запросите код подтверждения. Это может иметь некоторые преимущества безопасности. Основное отличие от вышеописанного метода состоит в том, что (часть) пользовательский интерфейс обслуживается как HTML сервером авторизации, тогда как с предоставлением учетных данных для пароля весь пользовательский интерфейс обслуживается приложением (клиент OAuth).

Обратите внимание, что на странице, обслуживаемой сервером авторизации, вы можете включить несколько методов проверки подлинности. Например, вы можете предложить ввести обычный пароль и только отправить SMS, если пароль не был введен. Поскольку это обычное веб-приложение, вы в принципе можете делать все возможное в веб-приложении. Грант авторизации завершается только тогда, когда сервер авторизации перенаправляется обратно в клиентское приложение.

+0

Я должен был упомянуть проблему с этим (я думал об этом). Есть одна небольшая проблема с этим. У меня также есть веб-интерфейс, который принимает пароли. Поскольку большинство операций происходит по телефону, все имена пользователей являются номерами телефонов, однако некоторым может не хватать пароль, и если пользователь открывает веб-интерфейс для его использования, другие sms будут отправлять «сброс пароля» на номер телефона и как только пользователь вводит код, он сможет создать новый пароль и войти через веб-интерфейс. – Gasim

+0

@Gasim Возможно, я что-то пропустил, но я не понимаю, как это проблема. Вы можете объяснить? –

+0

Я имею в виду, потому что у вас может быть отдельный пароль, который он может использовать в веб-интерфейсе, однако при использовании телефона ... так что код подтверждения и авторизация пароля будут перекрываться. Действительно ли можно создать собственный метод авторизации? Безопасность разумна тем же, потому что он использует все одинаково, за исключением чтения кода и чтения пароля - разных таблиц. Мой вопрос в том, что в целом идет со стандартами ... Соответствуют ли стандарты пользовательским типам грантов? – Gasim

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