api.video — большой поклонник аутентификации на основе токенов, особенно токена J.R.R… шучу, мы используем токены JWT. Хотя это требует дополнительной работы — вы должны предоставить свой ключ API нашей конечной точке аутентификации (https://ws.api.video/auth/api-key), чтобы получить токен — преимущества того стоят. Это. Сегодня мы рассмотрим механизмы аутентификации api.video и рассмотрим, что делает аутентификацию на основе токенов отличным выбором для нашего API.

Что такое токен?

Прежде чем мы углубимся в аутентификацию на основе токенов, давайте рассмотрим, что такое токен. Токен — это автономный фрагмент данных, который содержит всю информацию, необходимую для аутентификации в системе, поддерживающей токены. Они не имеют состояния, что означает, что они не хранят сведений о том, что происходит с клиентом. Если клиент хочет отправить информацию о своем состоянии, ее нужно передать вместе с запросом каким-то другим способом.

Существует много видов токенов, но api.video использует JWT (веб-токены Json), делегированные токены и токены UUID (универсально уникальные идентификаторы, RFC 4122). Не вдаваясь в подробности, токен JWT — это открытый стандарт (RFC 7519), который обеспечивает способ безопасной передачи информации между сторонами в виде объекта JSON. Он состоит из трех частей — заголовка, полезной нагрузки и подписи. Заголовок сообщает вам, какой у вас токен (JWT) и какой алгоритм вы использовали для его кодирования. Заголовок кодируется base64url. Полезная нагрузка содержит претензии. Утверждения — это утверждения и данные о пользователе (обычно), которые можно использовать для идентификации пользователя. Полезная нагрузка также закодирована в base64url. Подпись — это закодированный заголовок, закодированная полезная нагрузка, секрет, алгоритм, указанный в заголовке, взятые вместе и подписанные. После того, как все части собраны, вы получаете токен JWT, который разбит на три части — заголовок, полезные данные и подпись. Каждая часть отделяется точкой. Кто-то на любом конце транзакции может доверять информации, потому что она имеет цифровую подпись с секретом. api.video использует подписанные JWT. Если вам нужны дополнительные сведения о том, что такое JWT, см.

Делегированный токен в системах api.video — это «кому» + случайная строка. В нем нет деталей, как в JWT. Он создается по вашему запросу после успешной аутентификации с помощью JWT. В случае успеха вам выдается делегированный токен, предоставляющий ограниченные привилегии. Они используются для загрузки видео.

Токены UUID используются для частного просмотра VOD и прямых трансляций. Токен UUID — это 128-битное число, используемое для идентификации информации в компьютерных системах. Это случайная строка, сгенерированная с использованием алгоритма UUID. Единственная другая информация, которую он иногда содержит помимо случайной строки, — это метка времени. UUID — это хороший способ генерации токенов, потому что маловероятно, что они будут генерировать один и тот же UUID дважды.

Теперь, когда мы немного знаем о токенах, давайте посмотрим, как они используются с конечными точками api.video.

Аутентификация на api.video

Аутентификация на основе токенов — это когда вы каким-то образом подтверждаете свою личность, а затем получаете уникальный токен доступа, который можно использовать для доступа к ресурсам. С помощью api.video мы верифицируем пользователей по ключу API и по JWT. Мы используем ключ API для вашей аутентификации и генерируем JWT для использования в аутентификации носителя. Мы используем аутентификацию носителя для предоставления доступа к сервисам и возможности создавать делегированные токены. Затем вы можете использовать делегированные токены с определенными конечными точками. Мы генерируем приватные токены UUID для разовых просмотров видео или прямых трансляций.

Аутентификация носителя

Аутентификация носителя — это особый тип аутентификации на основе токенов. Когда вы проходите аутентификацию с помощью ключа API, мы используем предоставленную вами информацию для создания JWT, который отправляется вам в ответ. Токен, который вы получаете, является настоящим JWT, который действует в течение одного часа, и вы можете использовать его для доступа к службам api.video или для создания токенов для использования со службами api.video. Вы можете создать дополнительные JWT, если хотите, каждый длится один час.

Вы помещаете свой токен в заголовок авторизации для Bearer Authentication, например так: Authorization: Bearer 'your JWT token string'

Этот тип аутентификации называется аутентификацией носителя, потому что он понимается как «предоставить доступ носителю этого токена».

Основными преимуществами JWT являются:

  • Вам не нужно раскрывать свои учетные данные API.
  • Они не требуют много места в памяти.
  • Они без гражданства.
  • Если есть проблема с JWT, вы можете истечь и заменить его новым.
  • Вы можете создать сразу несколько JWT, которые иногда могут понадобиться для разных задач или пользователей.

Делегированная аутентификация

api.video использует аутентификацию на основе токенов, где токен не является JWT в:

  • Делегированные загрузки
  • Частные токены для просмотра частных видео и прямых трансляций

Делегированные загрузки используют настраиваемый делегированный токен. Стиль аутентификации для этого иногда называют «делегированной аутентификацией». Идея состоит в том, что вы можете ограничить доступ с помощью делегированного токена, в то же время позволяя службам или другим пользователям выполнять действия от имени пользователя (вас). Общие характеристики делегированных токенов:

  • Они полагаются на другую систему для аутентификации. (В нашем случае это будет запрос, в котором вы отправили JWT. Вы отправляете свой JWT через аутентификацию носителя, вы проходите проверку, а затем получаете токен для использования.)
  • Они блокируют доступ ко всем вашим привилегиям и учетным данным. Если кто-то перехватывает делегированный токен, он не получает сведений о пользователе, от имени которого выпущен токен, и не может получить доступ ни к чему, кроме того, что разрешено токеном.
  • Их можно легко контролировать. Вы можете создавать долгосрочные или краткосрочные токены и удалять их, когда они больше не нужны. В случае создания частных токенов на стороне сервера, api.video обрабатывает удаление токенов за вас.

Есть много способов настроить их, и делегированные токены не обязательно включают все перечисленные функции. С помощью api.video делегированные токены создаются путем отправки JWT через аутентификацию носителя и запроса токена для использования с делегированной загрузкой. Этот токен имеет срок жизни, выбранный вами, и его привилегии ограничены делегированными конечными точками.

К преимуществам делегированного токена относятся:

  • Вы можете использовать его для ограничения доступа к видеоконтенту.
  • Токены более легкие, чем JWT, что позволяет сократить время транзакций. JWT составляет около 304 байт, а делегированные токены api.video — около 24 байт каждый.
  • Его легче масштабировать. Вы можете предлагать одноразовые токены большему количеству людей, потому что они занимают гораздо меньше места — 24 байта каждый.
  • Кто-то не может разобрать делегированный или частный токен и получить сведения о пользователе, от имени которого был создан токен.
  • Кто-то не может использовать токен больше, чем указано в привилегиях.
  • Вы можете немедленно удалить скомпрометированные токены.

Частные токены

Частные токены UUID создаются на стороне сервера api.video. Они создаются для одноразового использования с видео по запросу (VOD) или прямой трансляцией. Преимущества токенов UUID:

  • Они занимают очень мало места в памяти. Каждый токен UUID может быть представлен в виде 128-битного целого числа, которое занимает меньше места, чем строка того же размера. Как и в случае с делегированным токеном, его легче масштабировать.
  • Вы можете использовать его для ограничения доступа.
  • Его нельзя разобрать для сбора учетных данных — это просто токен и, возможно, метка времени.
  • Маловероятно, что вы случайно сгенерируете один и тот же UUID дважды, избегая возможности коллизий.
  • У него есть свой стандарт — RFC4122.

Как api.video использует аутентификацию на основе токенов для частных видео и прямых трансляций?

Для частных видео (VOD) вы настраиваете свое видео так, чтобы общедоступная настройка была false. Затем, когда пользователь хочет его увидеть, ваше приложение отправляет запрос на видео, предоставляя videoId (и JWT). Ответ содержит ссылки на видео, а ссылки содержат токен. Каждый запрос на просмотр видео будет генерировать новый URL-адрес с уникальным токеном, который подходит только для одного просмотра. Для частных прямых трансляций процесс такой же.

Токены URL хороши тем, что вам, как разработчику, не нужно беспокоиться о безопасности или управлении токенами. Каждый раз, когда вы хотите, чтобы кто-то мог просматривать приватное видео или прямую трансляцию, api.video генерирует для вас ваши токены. Они хранятся на стороне сервера, поэтому их нельзя легко подделать, и они удаляются для вас, когда они больше не нужны. Это позволяет сосредоточиться на развитии.

Каждый токен позволяет одному зрителю смотреть видео или прямую трансляцию в течение одного сеанса. Если они закроют свой браузер и попытаются вернуться с тем же URL-адресом токена, они не пройдут. (Это не так драматично, они, вероятно, могут получить новый сеанс просмотра в зависимости от того, как вы настроили свое приложение.)

Каковы преимущества аутентификации на основе токенов?

Аутентификация на основе токенов особенно полезна, потому что токены, будь то делегированные, UUID или JWT:

  • Эффективный. Токены делают все быстрее, потому что вы не храните учетные данные. Все, что нужно пользователю для аутентификации конечной точки, содержится в токене, и он передается туда и обратно для каждого запроса. Это также упрощает масштабирование и добавление большего количества пользователей, поскольку требования к хранилищу ниже. Степень, в которой они ускоряют работу, зависит от типа вашего токена.
  • Гибкий. Вы можете использовать токены для веб-приложения или мобильного приложения и при этом получать те же преимущества.
  • Мобильный готов. Токены поддерживают простой в использовании мобильный сервер. Их гораздо проще внедрить, чем файлы cookie, и они позволяют вам контролировать доступ.
  • Безопасный. Токены не хранят конфиденциальную информацию и не раскрывают учетные данные пользователя. В частности, с api.video вы используете свои учетные данные API для получения токена, а затем используете его для создания других токенов, которые могут вам понадобиться. Вы передаете свой ключ API только один раз, и все хранится в ваших токенах. Это затрудняет компрометацию ваших учетных данных. Это отлично подходит для мобильных приложений, где распространенной проблемой является выяснение того, как хранить учетные данные API. С токенами вам не о чем беспокоиться. Ими также легче управлять и внедрять, чем сеансами, и, в отличие от сеансов, данные не хранятся в вашем браузере, который потенциально менее безопасен.
  • Доступно для совместного использования. Вы можете предоставить пользователям одноразовые токены или краткосрочные токены для выполнения определенных задач. Затем вы можете удалить токены или истечь их срок действия.

Каковы передовые методы аутентификации на основе токенов?

Основы безопасного использования аутентификации на основе токенов:

Основы безопасного использования аутентификации на основе токенов:

  • Не храните конфиденциальную или личную информацию в JWT. JWT могут быть перехвачены и прочитаны.
  • Отправляйте токены по защищенной сети.
  • Ограничьте количество токенов, которые вы создаете и которыми управляете, до необходимого. Используйте токены до истечения срока их действия, прежде чем создавать новый, и если вам необходимо создать несколько токенов, убедитесь, что у вас есть способ отслеживать и удалять их, чтобы они не существовали дольше, чем необходимо.
  • Защитите свои токены и защитите свой ключ API. Хотя токены могут упростить защиту вашего ключа API от компрометации, вы все равно должны принять меры для обеспечения надлежащей защиты ключа.
  • По возможности дайте вашим токенам истечение срока действия. Это помогает защитить вашу систему, поскольку в случае кражи токена хакер не может продолжать использовать его вечно.

Если вы хотите узнать больше, у нас есть несколько отличных руководств по делегированной загрузке и приватным видео:

Первоначально опубликовано на https://api.video.