Недавно я внедрил единый вход после праздника. Различные проекты требуют системы управления учетными записями. Это слишком хлопотно, из-за чего различные проекты становятся корявыми и лень писать (зачеркнуть).
OAuth 2.0 Соглашение (далее именуемое OAuth) — это протокол трехсторонней авторизации. В настоящее время большинство сторонних входов и авторизаций основаны на стандартной или улучшенной реализации этого протокола. OAuth 1.0 Стандарт 2007 Выпущена в 2018 году, 2.0 Стандарт 2011 Издано в 2016 году, в том числе 2.0 стандарты отменяют все Token из Процесс шифрования и упрощенный процесс авторизации, но в связи с обязательным использованием HTTPS протокол, считающийся более безопасным, чем 1.0 стандарты.
В понимании OAuth Прежде нужно понять каждое существительное из Основные. понятия
Клиент: клиент является стороной доступа OAuth, и его цель — запросить защищенные ресурсы пользователя, хранящиеся на сервере ресурсов. Можно понимать как интерфейсные приложения (такие как Интернет, приложения, апплеты и т. д.).
Пользовательский агент (UA): инструменты для участия пользователей в Интернете, такие как браузеры, системные идентификаторы и т. д.
Владелец ресурса: объект, которому принадлежит защищенный ресурс, например владелец ресурса (это вы!!), пользователь ниже является владельцем ресурса.
Сервер авторизации. Сервер, проверяющий личность владельца ресурса, — это то, что все обычно называют «сервером входа».
Сервер ресурсов: сервер, на котором размещаются ресурсы и который может получать и отвечать на запросы доступа к ресурсам, содержащие токены. Его можно понимать как серверную программу клиента.
Токен доступа: это то, что мы обычно называем токеном (токеном доступа). Это учетные данные авторизации, выданные сервером авторизации клиенту с авторизацией пользователя (владельца ресурса), который может иметь клиент (или сервер ресурсов, или кто-либо еще). it Этот токен осуществляет доступ к защищенному ресурсу от имени владельца ресурса.
Токен обновления: это то, что мы обычно называем «двойным токеном» (токен обновления). Его функция заключается в обновлении токена доступа. Токены доступа обычно недолговечны. Использование токенов обновления для повторного обмена токенами доступа может в определенной степени снизить нагрузку на сервер авторизации и владельцев ресурсов.
Адрес обратного вызова: OAuth2.0 — это тип протокола авторизации, основанный на обратных вызовах. В форме перенаправления 302 он может в определенной степени упростить операции клиента.
Область авторизации: пользователи могут указать диапазон защищенных ресурсов, к которым клиент может получить доступ, например, личные идентификационные номера налогоплательщика, псевдонимы, адреса электронной почты и т. д.
OAuth Протокол определен 4 режима авторизации (режим кода авторизации、Режим неявной авторизации、Режим авторизации по паролю владельца ресурса、клиент Режим авторизации учетных данных),Наиболее представительным является режим кода авторизации.,А еще я использую этот режим для авторизации из,Поэтому в этой статье объясняется только этот режим. если нужно знать о других шаблонах,Открытая платформа Xiaomi подробно описана в статье.,Можешь пойти и посмотреть,Конкретные ссылки можно найти в разделе «Ссылки» внизу этой статьи.
Шаблон кода авторизации на протяжении всего процесса авторизациии 1.0 Версия наиболее близкая, но весь процесс тоже нужно сильно упростить. OAuth2.0 Самая стандартная и широко используемая модель авторизации. Этот тип модели авторизации очень подходит для приложений с серверной частью. Конечно, их сейчас большинство. APP У каждого свой сервер, поэтому большинство APP из OAuth Авторизацию можно получить по Коду авторизациимодель,На рисунке ниже показана последовательность взаимодействия между различными ролями кода авторизации (здесь пользователям разрешено непосредственное участие в нем),Пользовательский агент опущен):
Полное описание процесса авторизации приведено ниже (пояснения конкретных параметров см. ниже):
Обратите внимание, что на практике эта часть может быть изменена. Подробную информацию см. в документации по использованию учетной записи Nya.
доступ https://account.lolinya.net/ , в соответствии с процессом Авторизоваться / зарегистрироваться счет
В «Управлении приложениями» выберите «Создать». приложение,Во всплывающем модальном окне,Войдите в новое приложение. Это имя будет отображаться пользователю. Можно изменить позже.
Затем нажмите кнопку «Просмотреть подробности» на панели действий списка приложений.,Приложение настройки из Введения, URL-адрес перенаправления, а также необходимые из Разрешения,После завершения настройки необходимо нажать кнопку Сохранить.
В настоящее время программа находится на этапе тестирования, и конфигурация разрешений будет постепенно увеличиваться позже.
После настройки вы можете просмотреть идентификатор клиента и ключ клиента здесь.
Код авторизации: Процесс. авторизацииизпромежуточный временный сертификат,Это временный сертификат, подтверждающий авторизацию пользователя.,Его жизненный цикл, как правило, короткий (протокол рекомендует, чтобы он не превышал 10 минут).,В течение этого действительного периода времени,клиент может использовать этот временный сертификат для авторизации сервера в обмен на токены доступа.
302 перенаправляет пользователей на этот адрес
https://account.lolinya.net/authorize
и переносить параметры запроса
Имя параметра | Это необходимо | Описание информации |
---|---|---|
client_id | должен | клиентID,используется для идентификации клиента,Генерируется при применении регистрации (т. е. AppId) |
state | рекомендовать | Используется для поддержания статуса во время процесса запроса и обратного вызова.,Предотвращение CSRF-атак,сервер ничего не делает с этим параметром,есликлиент несет этот параметр,Тогда в ответ сервер будет возвращен без изменений. |
redirect_uri | Необязательный | Адрес обратного вызова для авторизации (чтение по умолчанию настраивается при применении регистрации) |
scope | Необязательный | Разрешенияобъем,Используется для контроля клиентских решений.,есликлиент Параметр не передан,Затем сервер заменяется всеми Разрешениями приложения (все Разрешения читаются по умолчанию при настройке регистрации из) |
response_type | Необязательный | Для режима кода авторизации response_type=code это значение по умолчанию, и его не нужно передавать отдельно. |
После завершения авторизации пользователь будет перенаправлен на Создать. приложение при указании адреса, и переносить параметры запрос(если пользователь отказывает в авторизации, то code=deny
)
имя | Описание информации |
---|---|
code | Код авторизации,Код авторизации представляет собой подтверждение авторизации пользователя и временные учетные данные.,Можно использовать только один раз,Действует в течение 5 минут |
state | Если клиент передает этот параметр, он будет возвращен без изменений. |
Авторизоватьсервер Распространение Код авторизациипосле,клиент или ресурсный сервер,Перенесу только что выпущенныйиз Код авторизации Запросите следующий адрес
https://api.liyxi.com/node/v0/token
(Зеркальный сервер в материковом Китае, скорее всего, изменится, в основном на основании документации по использованию)
Перенос тела запроса
имя | Это необходимо | Описание информации |
---|---|---|
grant_type | должен | Для режима кода авторизацииgrant_type=authorization_code |
code | должен | Получить предыдущий шагиз Код авторизации |
redirect_uri | должен | Адрес обратного вызова для авторизации |
client_id | должен | клиент Идентификатор, используемый для идентификации клиента, эквивалентный appId , генерируется при подаче заявки на регистрацию |
client_secret | должен | клиентсекретный ключ,Эквивалент appSecret, генерируется при подаче заявки на регистрацию |
type | Необязательный | Если type=info, основная информация пользователя доставляется напрямую вместо токена. |
В обычных обстоятельствахизтело ответа
имя | Описание информации |
---|---|
access_token | доступжетон |
token_type | доступжетонтип,например, предъявитель,mac и т. д. |
expires_in | Токен доступа из жизненного цикла,в секундах,Указывает, сколько времени пройдет до истечения срока действия токена после его выпуска. |
refresh_token | В настоящее время недоступно, обычные пользователи вернутrefresh_token=null. |
scope | Фактический диапазон разрешений пользователя, например [1,2,3,4]. Подробную информацию см. в списке разрешений. |
если type=info
, тогда ответь
имя | Описание информации |
---|---|
uid | уникальный идентификатор пользователя |
nickname | Никнейм пользователя |
status | Текущий статус пользователя в системе |
avatar | URL аватара пользователя |
Например, если вам нужно получить информацию о пользователе, возьмите с собой только что выданный токен доступа.
https://api.liyxi.com/node/v0/info
(Зеркальный сервер в материковом Китае, скорее всего, изменится, в основном на основании документации по использованию)
тело ответа
json
{
status: 200,
msg: «Успешное получение основной информации о пользователе»,
data: {}
}
данные следующие
имя | тип | Описание информации |
---|---|---|
uid | String | уникальный идентификатор пользователя |
nickname | String | Никнейм пользователя |
status | Number | Текущий статус пользователя в системе |
avatar | String | URL аватара пользователя |
На отечественной платформе коротких видео1забавныйизсцена,это примерно token Нет смысла обновлять видео из области комментариев
Жетон изготовлен из header 、payload ,и signature В трех частях используются английские символы. “.” подключенизнить(JWT)。существоватьОбычно,header В хранилище находится этот токен алгоритма подписи такжетип(base64 После кодирования), полезная нагрузка Носитель памяти используется пользователем jwt Передача данных (base64) при генерации токена После кодирования), подпись Сохраненная строка представляет собой зашифрованную строку (подпись) с использованием первых двух и специального секретного ключа строки для предотвращения взлома. для "Много времени token будет взломан» Вот как это сказано,почти невозможно,И это не основная причина генерации токена обновления.
О краже токенов,существоватьВ обычных обстоятельствах,неизбежныйизпричины или личные причины(比如существоватьклиент или ресурсный Вирусное программное обеспечение было установлено кем-то на сервере.、Третья сторона использовала уязвимость)。существовать网络传输изв процессе,TLS Благодаря аутентификации, конфиденциальности, целостности и защите от повторного воспроизведения TLS Основной способ работы заключается в том, что клиент использует асимметричное шифрование для связи с сервером, реализует аутентификацию и согласовывает симметричное шифрование с использованием ключей, а алгоритм симметричного шифрования использует согласованные ключи для сопряжения информации. также Дайджест сообщений для зашифрованной связи,Между разными узлами используются разные симметричные ключи.,Это гарантирует, что информация может быть получена только обеими общающимися сторонами.,Поэтому в большинстве случаев токены не будут перехвачены во время передачи по сети.
О двойном токене из формы,确实可以существоватьв определенной степениПовышение безопасности,Но на практике он больше используется для снижения давления авторизации. Приведите пример,Например, пользователь Чжан Сан2正существовать使用扣扣3счет Играйте в скромных боевых крестьян4,Чжан Сан сыграл несколько пар подряд во время игры.,есликлиентиз Каждый запрос требует авторизации на сервере,Тогда уполномоченное лицо обязательно выдержит большое давление.,если сервер авторизации неисправен,Это повлияет на все сервисы, на которых хранятся защищенные ресурсы. если напрямую выпускает долгосрочные токены,клиент больше не связывается с авторизованным сервером после Авторизации,В настоящее время предполагаемые бизнес-нарушения со стороны Чжан Саня, такие как групповая установка лайков/пакетное добавление друзей/использование сторонних клиентов и другие бизнес-нарушения, были временно заморожены.,Вам необходимо перейти в систему самообслуживания Kuakou или управление средствами.5,Но Чжан Сан играет смиренных и сражающихся крестьян.,Времени разбираться с этим не было. В это время Чжан Сан уже находится в ненормальном состоянии.,Невозможно узнать защищенные ресурсы хранилища. Изсервер не может быть известен.,если токен долгосрочный из,всегда будет предоставлять услуги клиенту,Это очень опасно. Поэтому клиенту необходимо регулярно получать статус владельца ресурса от сервера авторизации.,для дополнительной безопасности,Это настоящая причина появления токенов обновления.,Не совсем для предотвращения кражи.
https://dev.mi.com/console/doc/detail?pId=711
https://account.lolinya.net/docs/
https://datatracker.ietf.org/doc/html/rfc5849
https://datatracker.ietf.org/doc/html/rfc6749
https://datatracker.ietf.org/doc/html/rfc6750
https://datatracker.ietf.org/doc/html/draft-hammer-oauth-v2-mac-token-02