Авторизацию по протоколу Oauth 2.0

Сергей15 років у сервісі
Дані замовника будуть вам доступні після подання заявки
23.03.2015

Есть 2 кабинета.

Нужно, чтоб при входе в одни кабинет (на одном сайте) авторизировался в другом кабинете (на другом сайте)

Это нужно сделать для WP

https://dl.dropboxusercontent.com/u/26065924/docs/Oauth-%D0%B0%D0%B2%D1%82%D0%BE%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F.txt

Авторизация работает по протоколу Oauth 2.0 (аналогично фэйсбуку и ряду других сервисов) с некоторыми расширенными возможностями.

Разрабатывать можно сразу на рабочем сервере, поскольку здесь все данные ничего не меняют.

http://DOMAIN/ - домен работающей системы. дальше ссылки будут на него

Возможно реализовать две схемы авторизации

1) как фэйсбук - сделать ссылку "Войти через систему". Здесь все по протоколу Oauth 2.0

Ссылка для авторизации:

http://DOMAIN/do.control/oauth/authorize?client_id=%s&redirect_uri=%s

в параметре redirect_uri передается ссылку, куда надо перебросить пользователя (%s)

client_id - номер клиента. зависит от сервиса. Сервис должен быть создан в системе.

продолжение описания после второй схемы авторизации (оно общее)

2) Сделать на сайте формочку для ввода логина и пароля, которая будет постить данные сразу в кабинет

здесь возникает ряд дополнений.

В этом втором случае форма постится по адресу

http://DOMAIN/do.control/oauth/authorize

Дополнительные параметры в форме:

action=login - обязательный параметр

client_id=1 - номер клиента. зависит от сервиса

redirect_uri=http://DOMAIN/login_true/ - здесь передаем адрес, куда сделать редирект в случае успешной авторизации

fail_uri=http://DOMAIN/login_false/ - здесь передаем адрес, куда сделать редирект в случае неуспешной авторизации

login=che - здесь передаем логин или емэйл (он у нас уникальный и по нему можно заходить как по логину)

password=12345 - здесь передаем пароль

в случае успешной авторизации попадаем на страницу redirect_uri с добавленным параметром code. code используется для дальнейшего получения данных как и в самом протоколе Oauth 2.0

В случае неуспешной авторизации попадаем на страницу fail_uri. Сюда в качестве параметра может быть передан необязательный параметр captcha=bad - это означает, что пользователь три раза ввел неверный пароль, и нужно показать капчу. Капча показывается по этой ссылке: http://DOMAIN/do.captcha/kaptcha.jpg

Значение капчи нужно передавать в поле captcha

------------------

После успешной авторизации пользователь перекидывается на ссылку where с параметром code

code используется для дальнейшего получения данных

В большинстве случаев нам достаточно знать логин пользователя и как минимум его имя-фамилию.

По протоколу OAuth 2.0 мы делаем минимум два запроса:

1-й запрос - получить токен доступа. этот токен доступа по умолчанию хранится достаточно долгое время - по нему можно запрашивать о пользователе разную информацию.

2-й запрос - по токену доступа получить данные о логине и имени-фамилии.

можно делать и другие запросы - получать другую информацию - например о купленных товарах и прочем.

токен доступа запрашивается по ссылке:

http://DOMAIN/do.control/oauth/access_token?client_id=%s&client_secret=%s&code=%s (ответ приходит в формате JSON)

http://DOMAIN/do.control/oauth/access_token.xml?client_id=%s&client_secret=%s&code=%s (ответ приходит в формате XML)

client_secret - секретный ключ, фиксированный для сервиса

в ответе приходит номер пользователя и токен доступа

Когда мы получили access_token, мы можем вызывать различные функции API по ссылке

method - наименование функции

http://DOMAIN/do.control/oauth/method/%s (ответ приходит в формате JSON)

http://DOMAIN/do.control/oauth/method/%s.xml (ответ приходит в формате XML)

В качестве параметра в функции API передаются параметры, указанные в функции, плюс обязательно access_token