0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

OAuth 2

Содержание

OAuth 2.0 простым и понятным языком

На хабре уже писали про OAuth 1.0, но понятного объяснения того, что такое OAuth 2.0 не было. Ниже я расскажу, в чем отличия и преимущества OAuth 2.0 и, как его лучше использовать на сайтах, в мобильных и desktop-приложениях.

Что такое OAuth 2.0

OAuth 2.0 — протокол авторизации, позволяющий выдать одному сервису (приложению) права на доступ к ресурсам пользователя на другом сервисе. Протокол избавляет от необходимости доверять приложению логин и пароль, а также позволяет выдавать ограниченный набор прав, а не все сразу.

Чем отличаются OpenID и OAuth

Не смотря на то, что объяснений на эту тему уже было много, она по-прежнему вызывает некоторое непонимание.

OpenID предназначен для аутентификации — то есть для того, чтобы понять, что этот конкретный пользователь является тем, кем представляется. Например, с помощью OpenID некий сервис Ололо может понять, что зашедший туда пользователь, это именно Рома Новиков с Mail.Ru. При следующей аутентификации Ололо сможет его опять узнать и понять, что, это тот же Рома, что и в прошлый раз.

OAuth же является протоколом авторизации, то есть позволяет выдать права на действия, которые сам Ололо сможет производить в Mail.Ru от лица Ромы. При этом Рома после авторизации может вообще не участвовать в процессе выполнения действий, например, Ололо сможет самостоятельно заливать фотографии на Ромин аккаунт.

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

Как и первая версия, OAuth 2.0 основан на использовании базовых веб-технологий: HTTP-запросах, редиректах и т. п. Поэтому использование OAuth возможно на любой платформе с доступом к интернету и браузеру: на сайтах, в мобильных и desktop-приложениях, плагинах для браузеров…

Ключевое отличие от OAuth 1.0 — простота. В новой версии нет громоздких схем подписи, сокращено количество запросов, необходимых для авторизации.

Общая схема работы приложения, использующего OAuth, такова:

  1. получение авторизации
  2. обращение к защищенным ресурсам

Результатом авторизации является access token — некий ключ (обычно просто набор символов), предъявление которого является пропуском к защищенным ресурсам. Обращение к ним в самом простом случае происходит по HTTPS с указанием в заголовках или в качестве одного из параметров полученного access token‘а.

В протоколе описано несколько вариантов авторизации, подходящих для различных ситуаций:

  • авторизация для приложений, имеющих серверную часть (чаще всего, это сайты и веб-приложения)
  • авторизация для полностью клиентских приложений (мобильные и desktop-приложения)
  • авторизация по логину и паролю
  • восстановление предыдущей авторизации

Авторизация для приложений, имеющих серверную часть

  1. Редирект на страницу авторизации
  2. На странице авторизации у пользователя запрашивается подтверждение выдачи прав
  3. В случае согласия пользователя, браузер редиректится на URL, указанный при открытии страницы авторизации, с добавлением в GET-параметры специального ключа — authorization code
  4. Сервер приложения выполняет POST-запрос с полученным authorization code в качестве параметра. В результате этого запроса возвращается access token

Это самый сложный вариант авторизации, но только он позволяет сервису однозначно установить приложение, обращающееся за авторизацией (это происходит при коммуникации между серверами на последнем шаге). Во всех остальных вариантах авторизация происходит полностью на клиенте и по понятным причинам возможна маскировка одного приложения под другое. Это стоит учитывать при внедрении OAuth-аутентификации в API сервисов.

Пример

Здесь и далее примеры приводятся для API Mail.Ru, но логика одинаковая для всех сервисов, меняются только адреса страниц авторизации. Обратите внимание, что запросы надо делать по HTTPS.

Редиректим браузер пользователя на страницу авторизации:

Здесь и далее, client_id и client_secret — значения, полученные при регистрации приложения на платформе.

После того, как пользователь выдаст права, происходит редирект на указанный redirect_uri:

Обратите внимание, если вы реализуете логин на сайте с помощью OAuth, то рекомендуется в redirect_uri добавлять уникальный для каждого пользователя идентификатор для предотвращения CSRF-атак (в примере это 123). При получении кода надо проверить, что этот идентификатор не изменился и соответствует текущему пользователю.

Используем полученный code для получения access_token, выполняя запрос с сервера:

Обратите внимание, что в последнем запросе используется client_secret, который в данном случае хранится на сервере приложения, и подтверждает, что запрос не подделан.

В результате последнего запроса получаем сам ключ доступа (access_token), время его «протухания&raquo (expires_in), тип ключа, определяющий как его надо использовать, (token_type) и refresh_token о котором будет подробнее сказано ниже. Дальше, полученные данные можно использовать для доступа к защищенным ресурсам, например, API Mail.Ru:

Авторизация полностью клиентских приложений

  1. Открытие встроенного браузера со страницей авторизации
  2. У пользователя запрашивается подтверждение выдачи прав
  3. В случае согласия пользователя, браузер редиректится на страницу-заглушку во фрагменте (после #) URL которой добавляется access token
  4. Приложение перехватывает редирект и получает access token из адреса страницы

Этот вариант требует поднятия в приложении окна браузера, но не требует серверной части и дополнительного вызова сервер-сервер для обмена authorization code на access token.

Пример

Открываем браузер со страницей авторизации:

Читать еще:  Как самому создать BSOD в Windows: ради забавы и тренировки дл?

После того, как пользователь выдаст права, происходит редирект на стандартную страницу-заглушку, для Mail.Ru это connect.mail.ru/oauth/success.html:

Приложение должно перехватить последний редирект, получить из адреса acess_token и использовать его для обращения к защищенным ресурсам.

Авторизация по логину и паролю

Авторизация по логину и паролю представляет простой POST-запрос, в результате которого возвращается access token. Такая схема не представляет из себя ничего нового, но вставлена в стандарт для общности и рекомендуется к применению только, когда другие варианты авторизации не доступны.

Пример

Восстановление предыдущей авторизации

Обычно, access token имеет ограниченный срок годности. Это может быть полезно, например, если он передается по открытым каналам. Чтобы не заставлять пользователя проходить авторизацию после истечения срока действия access token‘а, во всех перечисленных выше вариантах, в дополнение к access token‘у может возвращаться еще refresh token. По нему можно получить access token с помощью HTTP-запроса, аналогично авторизации по логину и паролю.

Пример

Минусы OAuth 2.0

Во всей этой красоте есть и ложка дегтя, куда без нее?

OAuth 2.0 — развивающийся стандарт. Это значит, что спецификация еще не устоялась и постоянно меняется, иногда довольно заметно. Так, что если вы решили поддержать стандарт прямо сейчас, приготовьтесь к тому, что его поддержку придется подпиливать по мере изменения спецификации. С другой стороны, это также значит, что вы можете поучаствовать в процессе написания стандарта и внести в него свои идеи.

Безопасность OAuth 2.0 во многом основана на SSL. Это сильно упрощает жизнь разработчикам, но требует дополнительных вычислительных ресурсов и администрирования. Это может быть существенным вопросом в высоко нагруженных проектах.

Заключение

OAuth — простой стандарт авторизации, основанный на базовых принципах интернета, что делает возможным применение авторизации практически на любой платформе. Стандарт имеет поддержку крупнейших площадок и очевидно, что его популярность будет только расти. Если вы задумались об API для вашего сервиса, то авторизация с использованием OAuth 2.0 — хороший выбор.

Призрак Цусимы: основы легендарного класса

Хотя каждый класс Legends обладает определенным набором уникальных способностей, все они разделяют несколько основных навыков, с которыми вы будете знакомы из базовой игры. Некоторые механики теперь привязаны к вашему снаряжению, а не открываются на экране навыков.

Вот что универсально для каждого класса:

Хотя стиль меча, который вы используете, ограничен катаной, которую вы экипируете, все способности в дереве самураев из базовой игры присутствуют, несмотря на механику лошади.

Скрытность

Каждый класс может перемещаться между точками укрытия, высокой травой и т. Д.

Убийство

У каждого класса есть способность незаметно убивать врагов, находясь на земле или в воздухе.

Движение

Каждый класс может использовать игровую механику передвижения: ходьба по канатам, мантии и т. Д.

Призрачное оружие

Хотя определенное оружие, такое как ударные дротики, предназначено только для скрытных классов, каждый класс Legends может использовать кунаи, дымовые шашки, луки, бросать грязь и т.

Почему ВКонтакте не принимает фото?

ВКонтакте проверяют качество твоего фото и не одобряют заявку, если фото недостаточно качественное. Либо заявка просто не отправляется, если фото плохое. Проблему можно решить. Тебе нужно только понять, что сделать хорошее фото — это твоя личная забота. Бесполезно плакаться в поддержку и чего-то просить. Свою проблему ты должен решить сам. Придется сделать фото заново и отправить еще раз.

Совет: не спорь со службой поддержки о качестве твоего фото. Не тебе решать, какое качество является достаточным, а какое — не является. Ты сам попал в такую ситуацию, что приходится отправлять фото для восстановления доступа к странице, поэтому выполняй требования.

Теперь конкретные решения для разных ситуаций:

Фотография на фоне заявки слишком темная

ВК пишет: «Фотография на фоне заявки слишком темная, попробуйте сфотографироваться в хорошо освещенном помещении, использовать вспышку или уменьшить яркость экрана». Как исправить?

  • Сделай свет в комнате поярче, включи еще один источник света, направь свет на лицо (настольная лампа, торшер и т.п.) и сделай фото еще раз.
  • Если фотографируешься вечером, попробуй лучше сделать это утром или днем, когда в комнате светло.
  • Попробуй сделать экран более темным (убавить яркость).
  • Нельзя фотографироваться напротив окна, напротив светильника. Источники света должны быть позади фотокамеры или сбоку, но никак не в кадре.
  • Если телефон автоматически регулирует яркость так, что экран очень светлый, а лицо очень темное, попробуй настроить яркость. Можно нажать на экране на темное место — например, лицо, стену, тень, чтобы баланс яркости отрегулировался.
  • Попробуй включить вспышку на телефоне (фотоаппарате). Но если она отразится в экране, будет хуже.
  • Если есть планшет, попробуй открыть на нем создание заявки и выйти с ним на улицу днем, чтобы сделать фото.

Главный секрет: сделай в комнате как можно светлее. Фотографируйся днем. Добавь еще больше света. Включи люстру. Принеси светильники и направь на себя. Но в кадре источников света не должно быть (кроме экрана с заявкой).

Изображение слишком низкого качества

ВК пишет: «Вы пытаетесь загрузить изображение слишком низкого качества. Пожалуйста, приложите фотографию в большем разрешении». Что делать? Есть требование: фото должно быть размером не менее 1300 пикселей (точек) по горизонтали. Вовсе не обязательно искать другой телефон с более хорошей камерой или фотоаппарат. Большинство современных телефонов могут сделать такое фото без проблем. Советуем при съемке использовать горизонтальный формат фото (альбомную ориентацию), когда длинная сторона — горизонтальная.

Возможно, дело в настройках камеры, если по какой-то причине она делает фото низкого разрешения. У тебя последний Айфон, фото отличные, чё, ВК не устраивают, ёпта? А может, когда-то ты выбрал в настройках камеры низкое качество, как на самом дешманском телефоне. Если смотришь фото только на маленьком экране, то для тебя и разницы нет. Настрой камеру на самое высокое качество или попроси кого-нибудь разобраться. Кроме того, даже дорогому телефону иногда сложно сделать хорошее фото, на котором одновременно и твое лицо, и светящийся экран. Если ничего не получается, попроси знакомого, который понимает в технике, сфотографировать тебя.

Читать еще:  Как поставить пароль на папку без дополнительных программ

Как узнать размеры фото на компьютере?

  1. Открой папку, где хранится фото.
  2. Нажми на фото левой кнопкой мышки один раз (выдели это фото).
  3. Внизу окна будет показан размер. Например, 960×720 — это мало, а 1300×1000 — уже достаточно.

Совет: если ничего не получается, пригласи в гости кого-нибудь из друзей, чтобы помогли сделать фото. На самом деле это несложно. Хорошее фото можно сделать почти любым телефоном при достаточном освещении.

Фото нечеткое (не в фокусе)

Если резкость фото недостаточная (лицо или экран с заявкой получились нечеткие, не в фокусе или смазались), то его не примут. На телефоне можно сфокусировать изображение, нажав пальцем на экране на то место, куда нужно навести резкость — на лицо или на экран. Расстояние от головы до экрана должно быть небольшое. На фотоаппарате фокус наводится, когда ты нажимаешь кнопку спуска не до конца (наполовину). А если фокусировка не автоматическая, а ручная, то нужно крутить кольцо на объективе.

А если фото смазывается и не получается сделать четкое, значит, в комнате слишком темно. Сделай так, чтобы освещение было хорошее.

Фото зернистое, некачественное

Чаще всего фото получается зернистым, когда недостаточно светло. Чтобы это исправить, воспользуйся теми же советами, которые мы уже дали: сделай свет в комнате поярче, принеси еще одну лампу, направь свет на лицо. Если фотографируешься в темное время суток, подожди до утра или до полудня, когда в комнате будет более светло.

Фото не загружается или не отправляется, выходит ошибка

Значит, у тебя проблемы с твоим браузером (программой, через которую ты заходишь на сайт ВКонтакте) или компьютером, подключением к интернету и тому подобное. Попробуй очистить временные файлы (кэш и куки) или установить другой браузер и отправить заявку с фото через него. Если ничего не получается, файл с фото не добавляется, найди другой компьютер (ноутбук) или пригласи компьютерного мастера.

Если ты пытаешься загрузить фото для заявки с телефона, то не пытайся. У многих с этим проблемы. Например, ты нажимаешь на кнопку «Выбрать файл» и ничего не происходит. Решение проблемы только одно: найди компьютер или ноутбук и создавай заявку с него, через полную версию сайта ВКонтакте.

На странице, которую хочу восстановить, нет моих фотографий

Тогда и смысла нет отправлять свое фото на фоне заявки — твоя заявка будет отклонена. Почему? Объяснение здесь: Заявка на восстановление страницы ВКонтакте отклонена. Что делать? Единственное исключение — если фотографии на странице были, но удалены человеком, который взломал ее (читай там же).

Подумай: может быть, первый способ восстановления для тебя более реален?

Самурайский класс

Стиль игры

Самурай – это передовой боец Legends , так сказать, острие копья. Они созданы для обеспечения живучести и нанесения урона, но мало что могут предложить в плане скрытности, помимо описанных выше способностей.

Классовое умение 1 (притяжение духа)

Усиливая свой клинок с помощью Spirit Pull, самурай истощает жизненную силу одного ближайшего врага за раз , пополняя их здоровье в процессе. Разумное использование «Истощения жизни» удерживает Самурая в бою, даже если он получил несколько ударов.

Классовое умение 2 (Взрывной удар)

Обменяйте утечку жизни на дополнительный урон с помощью Explosive Strike, который заставляет ваших врагов сотрясаться от взрыва каждый раз, когда вы получаете удар. Вы отказываетесь от живучести в пользу чистого потенциального ущерба.

Ultimate (Ярость Хатимана)

После короткого пения Самурай может нанести тяжелый урон пяти ближайшим противникам . Вам нужно будет нацелить способность с помощью ручки управления, если вы хотите атаковать разных противников – или вы можете продолжать атаковать одного и того же врага несколько раз.

Лучшие стратегии класса самурай

То, как вы играете за класс самураев в Ghost of Tsushima: Legends, зависит от того, насколько вам комфортно в бою.

Если вам нужна дополнительная безопасность, Spirit Pull будет держать вас в действии и подбодрит, если что-то пойдет не так. Если вы уверены в своей способности избежать повреждений, использование Explosive Strike позволит вам гораздо быстрее победить даже самых сильных противников, но вы будете наказаны сильнее за любые ошибки.

Hachiman’s Fury, как и все Ultimates, может использоваться как в нападении, так и в защите. Если вы хотите начать сложную схватку с меньшим количеством врагов, за которыми нужно следить, откройте эту способность. Вы также можете использовать этот ульт, чтобы быстро и с низким риском завершить бой.

Если товарищ по команде падает и нет хорошего способа прикрыть ваше возрождение, использование Hachiman’s Fury, чтобы дать себе немного места, более важно, чем сохранение всего боя в одиночку. В Legends вы живете и умираете в команде. Игра в одинокого волка здесь не годится.

OAuth 2.0 простым и понятным языком

На хабре уже писали про OAuth 1.0, но понятного объяснения того, что такое OAuth 2.0 не было. Ниже я расскажу, в чем отличия и преимущества OAuth 2.0 и, как его лучше использовать на сайтах, в мобильных и desktop-приложениях.

Что такое OAuth 2.0

OAuth 2.0 — протокол авторизации, позволяющий выдать одному сервису (приложению) права на доступ к ресурсам пользователя на другом сервисе. Протокол избавляет от необходимости доверять приложению логин и пароль, а также позволяет выдавать ограниченный набор прав, а не все сразу.

Чем отличаются OpenID и OAuth

Не смотря на то, что объяснений на эту тему уже было много, она по-прежнему вызывает некоторое непонимание.

OpenID предназначен для аутентификации — то есть для того, чтобы понять, что этот конкретный пользователь является тем, кем представляется. Например, с помощью OpenID некий сервис Ололо может понять, что зашедший туда пользователь, это именно Рома Новиков с Mail.Ru. При следующей аутентификации Ололо сможет его опять узнать и понять, что, это тот же Рома, что и в прошлый раз.

Читать еще:  Windows завершает сеанс после запуска программы

OAuth же является протоколом авторизации, то есть позволяет выдать права на действия, которые сам Ололо сможет производить в Mail.Ru от лица Ромы. При этом Рома после авторизации может вообще не участвовать в процессе выполнения действий, например, Ололо сможет самостоятельно заливать фотографии на Ромин аккаунт.

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

Как и первая версия, OAuth 2.0 основан на использовании базовых веб-технологий: HTTP-запросах, редиректах и т. п. Поэтому использование OAuth возможно на любой платформе с доступом к интернету и браузеру: на сайтах, в мобильных и desktop-приложениях, плагинах для браузеров…

Ключевое отличие от OAuth 1.0 — простота. В новой версии нет громоздких схем подписи, сокращено количество запросов, необходимых для авторизации.

Общая схема работы приложения, использующего OAuth, такова:

  1. получение авторизации
  2. обращение к защищенным ресурсам

Результатом авторизации является access token — некий ключ (обычно просто набор символов), предъявление которого является пропуском к защищенным ресурсам. Обращение к ним в самом простом случае происходит по HTTPS с указанием в заголовках или в качестве одного из параметров полученного access token‘а.

В протоколе описано несколько вариантов авторизации, подходящих для различных ситуаций:

  • авторизация для приложений, имеющих серверную часть (чаще всего, это сайты и веб-приложения)
  • авторизация для полностью клиентских приложений (мобильные и desktop-приложения)
  • авторизация по логину и паролю
  • восстановление предыдущей авторизации

Авторизация для приложений, имеющих серверную часть

  1. Редирект на страницу авторизации
  2. На странице авторизации у пользователя запрашивается подтверждение выдачи прав
  3. В случае согласия пользователя, браузер редиректится на URL, указанный при открытии страницы авторизации, с добавлением в GET-параметры специального ключа — authorization code
  4. Сервер приложения выполняет POST-запрос с полученным authorization code в качестве параметра. В результате этого запроса возвращается access token

Это самый сложный вариант авторизации, но только он позволяет сервису однозначно установить приложение, обращающееся за авторизацией (это происходит при коммуникации между серверами на последнем шаге). Во всех остальных вариантах авторизация происходит полностью на клиенте и по понятным причинам возможна маскировка одного приложения под другое. Это стоит учитывать при внедрении OAuth-аутентификации в API сервисов.

Пример

Здесь и далее примеры приводятся для API Mail.Ru, но логика одинаковая для всех сервисов, меняются только адреса страниц авторизации. Обратите внимание, что запросы надо делать по HTTPS.

Редиректим браузер пользователя на страницу авторизации:

Здесь и далее, client_id и client_secret — значения, полученные при регистрации приложения на платформе.

После того, как пользователь выдаст права, происходит редирект на указанный redirect_uri:

Обратите внимание, если вы реализуете логин на сайте с помощью OAuth, то рекомендуется в redirect_uri добавлять уникальный для каждого пользователя идентификатор для предотвращения CSRF-атак (в примере это 123). При получении кода надо проверить, что этот идентификатор не изменился и соответствует текущему пользователю.

Используем полученный code для получения access_token, выполняя запрос с сервера:

Обратите внимание, что в последнем запросе используется client_secret, который в данном случае хранится на сервере приложения, и подтверждает, что запрос не подделан.

В результате последнего запроса получаем сам ключ доступа (access_token), время его «протухания&raquo (expires_in), тип ключа, определяющий как его надо использовать, (token_type) и refresh_token о котором будет подробнее сказано ниже. Дальше, полученные данные можно использовать для доступа к защищенным ресурсам, например, API Mail.Ru:

Авторизация полностью клиентских приложений

  1. Открытие встроенного браузера со страницей авторизации
  2. У пользователя запрашивается подтверждение выдачи прав
  3. В случае согласия пользователя, браузер редиректится на страницу-заглушку во фрагменте (после #) URL которой добавляется access token
  4. Приложение перехватывает редирект и получает access token из адреса страницы

Этот вариант требует поднятия в приложении окна браузера, но не требует серверной части и дополнительного вызова сервер-сервер для обмена authorization code на access token.

Пример

Открываем браузер со страницей авторизации:

После того, как пользователь выдаст права, происходит редирект на стандартную страницу-заглушку, для Mail.Ru это connect.mail.ru/oauth/success.html:

Приложение должно перехватить последний редирект, получить из адреса acess_token и использовать его для обращения к защищенным ресурсам.

Авторизация по логину и паролю

Авторизация по логину и паролю представляет простой POST-запрос, в результате которого возвращается access token. Такая схема не представляет из себя ничего нового, но вставлена в стандарт для общности и рекомендуется к применению только, когда другие варианты авторизации не доступны.

Пример

Восстановление предыдущей авторизации

Обычно, access token имеет ограниченный срок годности. Это может быть полезно, например, если он передается по открытым каналам. Чтобы не заставлять пользователя проходить авторизацию после истечения срока действия access token‘а, во всех перечисленных выше вариантах, в дополнение к access token‘у может возвращаться еще refresh token. По нему можно получить access token с помощью HTTP-запроса, аналогично авторизации по логину и паролю.

Пример

Минусы OAuth 2.0

Во всей этой красоте есть и ложка дегтя, куда без нее?

OAuth 2.0 — развивающийся стандарт. Это значит, что спецификация еще не устоялась и постоянно меняется, иногда довольно заметно. Так, что если вы решили поддержать стандарт прямо сейчас, приготовьтесь к тому, что его поддержку придется подпиливать по мере изменения спецификации. С другой стороны, это также значит, что вы можете поучаствовать в процессе написания стандарта и внести в него свои идеи.

Безопасность OAuth 2.0 во многом основана на SSL. Это сильно упрощает жизнь разработчикам, но требует дополнительных вычислительных ресурсов и администрирования. Это может быть существенным вопросом в высоко нагруженных проектах.

Заключение

OAuth — простой стандарт авторизации, основанный на базовых принципах интернета, что делает возможным применение авторизации практически на любой платформе. Стандарт имеет поддержку крупнейших площадок и очевидно, что его популярность будет только расти. Если вы задумались об API для вашего сервиса, то авторизация с использованием OAuth 2.0 — хороший выбор.

Ссылка на основную публикацию
Статьи c упоминанием слов:
Adblock
detector