Git Product home page Git Product logo

oauth-php's Introduction

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.