Skip to content

Nimdis/oauth-php

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 

Repository files navigation

OAuth

##Использование единой системы аутентификации пользователей с использованием открытого протокола OAuth

Аутенитификация - процедура проверки подлинности. К примеру введенных данных пользователя (логин, пароль).

Авторизация - предоставление определенному лицу или группе лиц прав на определенное действие.

В нашем случае аутентификация осуществляется на сервере sso.tusur.ru, а авторизаця на приложении, запрашивающем данную функцию.

##Что мы имеем сейчас?

  • N приложений
  • Некоторые взаимодействия между ними
  • На бОльшей части из них необходима регистрация и отдельная аутентификация

При построении распределенных систем такой подход сильно усложняет жизнь.

##OAuth OAuth - открытый протокол авторизации который позволяет предоставить третьей стороне ограниченный доступ к защищенным ресурсам пользователя без необходимости передавать ей логин и пароль.

oauth

####Преимущества Главное преимущество OAuth для работы распределенных систем - удобство пользователя. Имея один сервер аутентификации пользователь проходит процедуру единожды и может использовать каждую из систем не задумываять о повторной процедуре входа.

  1. Безопасность. Нет необходимости беспокоиться о хранении пользовательских данных. Они весгда хронятся в одном месте, а не распределены.
  2. Повышение лояльности пользователей. У пользователя больше оснований доверять сервису, т.к. получить доступ к его данным сложнее, либо невозможно.
  3. Удобство для пользователей. Отсутствие необходимости много раз проходить процедуру аутентификации, а также упрощении данной процедуры для клиентских серверов.
  4. Удобство для разработчика. Не нужно делать для каждой отдельной системы свой способ аутентификации.

####Основы Клиент - потребитель OAuth, т.е. сервер получающий данные о клиенте.
Сервер - сервер, передающий данные о клиенте.
Владелец ресурса - пользователь.

####Как работает OAuth

  1. Клиент посредством протокола HTTPS/HTTP (давно хотим прикупить ключ) отправляет серверу запрос, который содержит идентификатор клиента, метку времени, адрес обратного вызова по которому нужно вернуть токен, используемый тип цифровой подписи и саму подпись.
  2. Сервер подтверждает запрос и отвечает клиенту токеном запроса (Request Token) и частью разделённого секрета.
  3. Клиент передает токен владельцу ресурсов (пользователю) и перенаправляет его на сервер для прохождения аутентификации.
  4. Сервер, получив от пользователя токен, запрашивает у него его логин и пароль, и в случае успешной аутентификации просит пользователя подтвердить доступ клиента к ресурсам (авторизация), после чего пользователь перенаправляется сервером к клиенту.
  5. Клиент передает серверу токен (Request Token) посредством протокола TLS и запрашивает доступ к ресурсам.
  6. Сервер подтверждает запрос и отвечает клиенту новым токеном доступа (Access Token).
  7. Используя новый токен, клиент обращается к серверу за ресурсами.
  8. Сервер подтверждает запрос и предоставляет ресурсы.

##Opauth Opauth - мультипровайдерный фреймфворк oauth для PHP. Достоинства:

  • поддержка большого количества фреймворков CodeIgniter, Zend, Yii, Laravel
  • поддержка большого количества фреймворков Facebook, Twitter, GitHub
  • возможность добавления своих провайдеров (strategies)

Для упрощения внедрения для Opauth была написана стратегия которую можно найти по ссылке на гитхаб в конце презентации

##Полезные ссылки:

  1. SSO-strategy (https://github.com/Nimdis/sso-strategy)
  2. Opauth for Yii Framework (https://github.com/kahwee/yii-opauth)
  3. Opauth (https://github.com/opauth/opauth)
  4. Презентация (https://docs.google.com/presentation/d/1ipYPWAhJi_0gKS2e1CPQ54IuYec9PtNRdq9_ZEYdV4Y/edit?usp=sharing)
  5. Доклад (https://github.com/Nimdis/oauth-php)

##Использованные материалы:

  1. http://en.wikipedia.org/wiki/Oauth, http://ru.wikipedia.org/wiki/OAuth
  2. Различные случайные картинки по теме.
  3. https://github.com/opauth/opauth/wiki

MIT Licensed Copyright © 2014 OpenTeam (https://github.com/openteam), Sergei Toroshchin (https://github.com/Nimdis)

About

my small presentation

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published