##Использование единой системы аутентификации пользователей с использованием открытого протокола OAuth
Аутенитификация - процедура проверки подлинности. К примеру введенных данных пользователя (логин, пароль).
Авторизация - предоставление определенному лицу или группе лиц прав на определенное действие.
В нашем случае аутентификация осуществляется на сервере sso.tusur.ru, а авторизаця на приложении, запрашивающем данную функцию.
##Что мы имеем сейчас?
- N приложений
- Некоторые взаимодействия между ними
- На бОльшей части из них необходима регистрация и отдельная аутентификация
При построении распределенных систем такой подход сильно усложняет жизнь.
##OAuth OAuth - открытый протокол авторизации который позволяет предоставить третьей стороне ограниченный доступ к защищенным ресурсам пользователя без необходимости передавать ей логин и пароль.
####Преимущества Главное преимущество OAuth для работы распределенных систем - удобство пользователя. Имея один сервер аутентификации пользователь проходит процедуру единожды и может использовать каждую из систем не задумываять о повторной процедуре входа.
- Безопасность. Нет необходимости беспокоиться о хранении пользовательских данных. Они весгда хронятся в одном месте, а не распределены.
- Повышение лояльности пользователей. У пользователя больше оснований доверять сервису, т.к. получить доступ к его данным сложнее, либо невозможно.
- Удобство для пользователей. Отсутствие необходимости много раз проходить процедуру аутентификации, а также упрощении данной процедуры для клиентских серверов.
- Удобство для разработчика. Не нужно делать для каждой отдельной системы свой способ аутентификации.
####Основы
Клиент - потребитель OAuth, т.е. сервер получающий данные о клиенте.
Сервер - сервер, передающий данные о клиенте.
Владелец ресурса - пользователь.
####Как работает OAuth
- Клиент посредством протокола HTTPS/HTTP (давно хотим прикупить ключ) отправляет серверу запрос, который содержит идентификатор клиента, метку времени, адрес обратного вызова по которому нужно вернуть токен, используемый тип цифровой подписи и саму подпись.
- Сервер подтверждает запрос и отвечает клиенту токеном запроса (Request Token) и частью разделённого секрета.
- Клиент передает токен владельцу ресурсов (пользователю) и перенаправляет его на сервер для прохождения аутентификации.
- Сервер, получив от пользователя токен, запрашивает у него его логин и пароль, и в случае успешной аутентификации просит пользователя подтвердить доступ клиента к ресурсам (авторизация), после чего пользователь перенаправляется сервером к клиенту.
- Клиент передает серверу токен (Request Token) посредством протокола TLS и запрашивает доступ к ресурсам.
- Сервер подтверждает запрос и отвечает клиенту новым токеном доступа (Access Token).
- Используя новый токен, клиент обращается к серверу за ресурсами.
- Сервер подтверждает запрос и предоставляет ресурсы.
##Opauth Opauth - мультипровайдерный фреймфворк oauth для PHP. Достоинства:
- поддержка большого количества фреймворков CodeIgniter, Zend, Yii, Laravel
- поддержка большого количества фреймворков Facebook, Twitter, GitHub
- возможность добавления своих провайдеров (strategies)
Для упрощения внедрения для Opauth была написана стратегия которую можно найти по ссылке на гитхаб в конце презентации
##Полезные ссылки:
- SSO-strategy (https://github.com/Nimdis/sso-strategy)
- Opauth for Yii Framework (https://github.com/kahwee/yii-opauth)
- Opauth (https://github.com/opauth/opauth)
- Презентация (https://docs.google.com/presentation/d/1ipYPWAhJi_0gKS2e1CPQ54IuYec9PtNRdq9_ZEYdV4Y/edit?usp=sharing)
- Доклад (https://github.com/Nimdis/oauth-php)
##Использованные материалы:
- http://en.wikipedia.org/wiki/Oauth, http://ru.wikipedia.org/wiki/OAuth
- Различные случайные картинки по теме.
- https://github.com/opauth/opauth/wiki
MIT Licensed Copyright © 2014 OpenTeam (https://github.com/openteam), Sergei Toroshchin (https://github.com/Nimdis)