Перейти к содержимому

Api токен что это

  • автор:

API Token

В начале работы с API VMware Cloud Director необходимо пройти аутентификацию , в результате которой вы указываете данные своей учетной записи и взамен получаете Access Token. Вместо учетных данных можно указать API Token, который принадлежит пользователю тенанта. API Token удобно использовать для работы различных API-клиентов, в т. ч. скриптов для автоматизации управления.

Идентификатор, выпущенный пользователем. Позволяет изменить способ аутентификации и получить Access Token для авторизации дальнейших вызовов API.

API Token создается и удаляется в VMware Cloud Director.

API Token бессрочный, но может быть отозван пользователем.

Идентификатор сессии, который используется для авторизации при вызовах API.

Access Token создается при аутентификации с помощью стандартного способа аутентификации (с использованием логина и пароля) или API Token (с помощью вызова метода API, описанного ниже).

Срок жизни Access Token определяется сроком жизни сессии, которым управляет провайдер Cloud.ru.

  • Ограничения API Token
  • Генерация API Token
  • Получение доступа с помощью API Token
  • Проверка получения доступа
  • Отзыв API Token

Ограничения API Token

При аутентификации с помощью API Token пропадают следующие возможности:

  • изменение паролей пользователей;
  • управление пользователями (создание, удаление, изменение);
  • создание других API Token;
  • просмотр и отзыв других API Token.

Генерация API Token

Убедитесь , что для роли администратора организации включено право ACCESS CONTROL → User → Manage user’s own API token (для управления своим API Token) и право Manage all user’s API tokens (для управления API Token других пользователей тенанта). Они необходимы для генерации и управления API Token, и без указанных прав блок Access Tokens будет недоступен в интерфейсе VMware Cloud Director.

Чтобы сгенерировать API Token для текущего пользователя, выполните следующие шаги в VMware Cloud Director:

  1. Справа сверху раскройте меню пользователя и нажмите User preferences .
  2. В блоке Access Tokens нажмите NEW .
  3. Укажите название API Token и нажмите CREATE .
  4. Скопируйте сгенерированный API Token.

Примечание API Token можно скопировать только на этом шаге.

Далее проверьте доступ с помощью полученного API Token.

Получение доступа с помощью API Token

API Token нужен для получения Access Token, который далее используется во всех запросах сессии и помогает выполнять различные операции с доступной инфраструктурой.

Чтобы получить Access Token необходимо знать:

  • — сгенерированный API Token.
  • — зависит от региона, в котором размещается ваш виртуальный ЦОД. Он отображается в ссылке на VMware Cloud Director https:///tenant/my-tenant/ . Ее мы отправляем при подключении услуги. Например, для региона PD01 параметр принимает значение vcd.sbercloud.ru , для PD11 — vcd11.msk.sbercloud.ru .
  • — название тенанта , которое можно посмотреть в URL-адресе для входа в VMware Cloud Director https:///tenant/ .

cURL (format) cURL (sample) Postman (sample)

curl -k --header "Accept: application/json" --header "Content-Type: application/x-www-form-urlencoded" --header "Content-Length: 71" --data "grant_type=refresh_token&refresh_token=" --request POST "https:///oauth/tenant//token" 
curl -k --header "Accept: application/json" --header "Content-Type: application/x-www-form-urlencoded" --header "Content-Length: 71" --data "grant_type=refresh_token&refresh_token=pkAtl. " --request POST "https://vcd.sbercloud.ru/oauth/tenant/my-tenant/token" 
POST https://vcd.sbercloud.ru/oauth/tenant/my-tenant/token Headers: - KEY: Accept - VALUE: application/json - KEY: Content-Type - VALUE: application/x-www-form-urlencoded - KEY: Content-Length - VALUE: 71 Body: grant_type=refresh_token&refresh_token=pkAtl.

Вы получите ответ с Access Token:

200 ОК  "access_token": "eyJhbG. ", "token_type": "Bearer", . > 

API Token действителен даже после выхода пользователя из системы. После истечения срока действия Access Token приложение может получить новый Access Token с помощью API Token.

Проверка получения доступа

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

cURL (format) cURL (sample) Postman (sample)

curl -k --header "Accept: application/*;version=36.1" --header "Authorization: Bearer " --request GET "https:///api/org/" 
curl -k --header "Accept: application/*;version=36.1" --header "Authorization: Bearer eyJhbG. " --request GET "https://vcd.sbercloud.ru/api/org/" 
GET https://vcd.sbercloud.ru/api/org/ Headers: - KEY: Accept - VALUE: application/*;version=36.1 Authorization: - Type: Bearer Token - Token: eyJhbG.

Вы получите ответ вида:

  href="https:///api/org/" name=""/> . 

Токен авторизации на примере JSON WEB Token

https://proglib.io/p/jwt-for-dummies/

Доброго времени суток, дорогой читатель. В данной статье я постараюсь рассказать об одном из самых популярных (на сегодняшний день) способов авторизации в различных клиент-серверных приложениях — токен авторизации. А рассматривать мы его будем на примере самой популярной реализации — JSON Web Token или JWT.

Введение

Начнем с того, что важно уметь различать следующие два понятия: аутентификации и авторизации. Именно с помощью этих терминов почти все клиент-серверные приложения основывают разделение прав доступа в своих сервисах.

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

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

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

Еще одно небольшое введение

Прежде чем начать говорить о самом токене авторизации следует упомянуть для каких целей вообще его решили использовать. Поскольку мы знаем, что почти весь интернет так или иначе построен на протоколе HTTP(или его старшем брате HTTPS) и что он не отслеживает состояние, то есть при каждом запросе HTTP ничего не знает, что происходило до этого, он лишь передает запросы, то возникает следующая проблема: если аутентификация нашего пользователя происходит с помощью логина и пароля, то при любом следующем запросе наше приложение не будет знать все тот же ли этот человек, и поэтому придётся каждый раз заново логиниться. Решением данной проблемы является как раз наш токен, а конкретно его самая популярная реализация — JSON Web Tokens (JWT). Также помимо решения вопросов с аутентификацией токен решает и другую не менее важную проблему авторизации (разграничение разрешенных данному пользователю действий), о том каким образом мы узнаем ниже, когда начнем разбирать структуру токена.

Формальное определение

Приступим наконец к работе самого токена. Как я сказал ранее в качестве токенов наиболее часто рассматривают JSON Web Tokens (JWT) и хотя реализации бывают разные, но токены JWT превратились в некий стандарт, именно поэтому будем рассматривать именно на его примере.

JSON Web Token (JWT) — это открытый стандарт (RFC 7519) для создания токенов доступа, основанный на формате JSON.

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

Принцип работы

Рассмотрим принцип работы клиент серверных приложений, работающих с помощью JWT. Первым делом пользователь проходит аутентификацию, конечно же если не делал этого ранее и в этом есть необходимость, а именно, например, вводит свой логин и пароль. Далее приложение выдаст ему 2 токена: access token и refresh token (для чего нужен второй мы обсудим ниже, сейчас речь идет именно об access token). Пользователь тем или иным способом сохраняет его себе, например, в локальном хранилище или в хранилище сессий. Затем, когда пользователь делает запрос к API приложения он добавляет полученный ранее access token. И наконец наше приложение, получив данный запрос с токеном, проверяет что данный токен действительный (об этой проверке, опять же, ниже), вычитывает полезные данные, которые помогут идентифицировать пользователя и проверить, что он имеет право на запрашиваемые ресурсы. Таким нехитрым образом происходит основная логика работы с JSON Web Tokens.

https://habr.com/ru/post/336082/

Структура токена

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

  1. Заголовок (header)
  2. Полезные данные (playload)
  3. Подпись (signature)

funnytorimage.pw

Рассмотрим каждую часть по подробнее.

Заголовок

Это первая часть токена. Она служит прежде всего для хранения информации о токене, которая должна рассказать о том, как нам прочитать дальнейшие данные, передаваемые JWT. Заголовок представлен в виде JSON объекта, закодированного в Base64-URL Например:

Если раскодировать данную строку получим:

Заголовок содержит два главных поля: alg и typ. Поле typ служит для информации о типе токена, но как я уже упоминал ранее, что JWT превратился в некий стандарт, то это поле перестало нести особый смысл и служит скорее для целей будущего, если вдруг появится улучшенная версия алгоритма JWT(2.0), которая заменит JWT. Поле alg задает алгоритм шифрования. Обязательный для поддержки всеми реализациями является алгоритм HMAC с использованием SHA-256, или же, как он обозначен в заголовке, HS256. Для работы с этим алгоритмом нужен один секретный ключ, конкретный механизм работы рассмотрим ниже. Для справки можно также отметить, что существует и асимметричный алгоритм, который можно использовать в JWT, например, RS256. Для работы с ним требуется два ключа — открытый и закрытый. Но в данной статье рассмотрим работу с одним закрытым ключом.

Полезные данные

Перейдем наконец к полезным данным. Опять же — это JSON объект, который для удобства и безопасности передачи представляется строкой, закодированной в base64. Наглядный пример полезных данных (playload) токена может быть представлен следующей строкой:

Что в JSON формате представляет собой:

Именно здесь хранится вся полезная информация. Для данной части нет обязательных полей, из наиболее часто встречаемых можно отметить следующие:

iss — используется для указания приложения, из которого отправляется токен.

user_id — для идентификации пользователя в нашем приложении, кому принадлежит токен.

Одной из самых важных характеристик любого токена является время его жизни, которое может быть задано полем exp. По нему происходит проверка, актуален ли токен еще (что происходит, когда токен перестает быть актуальным можно узнать ниже). Как я уже упоминал, токен может помочь с проблемой авторизации, именно в полезных данных мы можем добавить свои поля, которые будут отражать возможности взаимодействия пользователя с нашим приложением. Например, мы можем добавить поле is_admin или же is_preferUser, где можем указать имеет ли пользователь права на те или иные действия, и при каждом новом запросе с легкостью проверять, не противоречат ли запрашиваемые действия с разрешенными. Ну а что же делать, если попробовать изменить токен и указать, например, что мы являемся администраторами, хотя таковыми никогда не были. Здесь мы плавно можем перейти к третьей и заключительной части нашего JWT.

Подпись

На данный момент мы поняли, что пока токен никак не защищен и не зашифрован, и любой может изменить его и тем самым нарушается вообще весь смысл аутентификации. Эту проблему призвана решить последняя часть токена — а именно сигнатура (подпись). Происходит следующее: наше приложение при прохождении пользователем процедуры подтверждения, что он тот за кого себя выдает, генерирует этот самый токен, определяет поля, которые нужны, записывает туда данные, которые характеризуют данного пользователя, а дальше с помощью заранее выбранного алгоритма (который отмечается в заголовке в поле alg токена), например HMAC-SHA256, и с помощью своего приватного ключа (или некой секретной фразы, которая находится только на серверах приложения) все данные токена подписываются. И затем сформированная подпись добавляется, также в формате base64, в конец токена. Таким образом наш итоговый токен представляет собой закодированную и подписанную строку. И далее при каждом новом запросе к API нашего приложения, сервер с помощью своего секретного ключа сможет проверить эту подпись и тем самым убедиться, что токен не был изменен. Эта проверка представляет собой похожую на подпись операцию, а именно, получив токен при новом запросе, он вынимает заголовок и полезные данные, затем подписывает их своим секретным ключом, и затем идет просто сравнение двух получившихся строк. Таким нехитрым способом, если не скомпроментировать секретный ключ, мы всегда можем знать, что перед нами все еще наш %user_name% с четко отведенными ему правами.

Время жизни токена и Refresh Token

Теперь плавно перейдем к следующему вопросу — времени жизни токена, и сопутствующей этой теме refresh token. Мы помним, что одно из важнейших свойств токена — это время его жизни. И оно совсем недолговечное, а именно 10-30 минут. Может возникнуть вопрос: а зачем такое короткое время жизни, ведь тогда придется каждый раз заново создавать новый токен, а это лишняя нагрузка на приложения. А ответ достаточно очевидный, который включает в себя и одновременно ответ на вопрос: а что делать если токен был перехвачен. Действительно, если токен был перехвачен, то это большая беда, так как злоумышленник получает доступ к приложению от имени нашего %user_name%, но так как access token является короткоживущим, то это происходит лишь на недолгий период. А дальше этот токен уже является не валидным. И именно чтобы обновить и получить новый access token нужен refresh token. Как мы знаем (или если забыли можем снова прочитать в начале) пользователь после процесса аутентификацию получает оба этих токена. И теперь по истечении времени жизни access token мы отсылаем в приложение refresh token и в ответ получаем снова два новых токена, опять же один многоразовый, но ограниченный по времени — токен доступа, а второй одноразовый, но долгоживущий — токен обновления. Время жизни refresh token вполне может измеряться месяцами, что достаточно для активного пользователя, но в случае если и этот токен окажется не валидным, то пользователю следует заново пройти идентификацию и аутентификацию, и он снова получит два токена. И весь механизм работы повторится.

Заключение

В данной статье я постарался подробно рассмотреть работу клиент-серверных приложений с токеном доступа, а конкретно на примере JSON Web Token (JWT). Еще раз хочется отметить с какой сравнительной легкостью, но в тоже время хорошей надежностью, токен позволяет решать проблемы аутентификации и авторизации, что и сделало его таким популярным. Спасибо за уделенное время.

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

  1. 5 Easy Steps to Understanding JSON Web Tokens (JWT)
  2. JWT — как безопасный способ аутентификации и передачи данных
  3. Securing React Redux Apps With JWT Tokens
  4. Зачем нужен Refresh Token, если есть Access Token?

API-токены. Как получить перманентный токен, использовать и удалить

API-токен — это специальный код с определенным сроком действия, который позволяет вашему приложению получить доступ к аккаунту через API.

Для чего нужен перманентный API-токен

Если вы хотите настроить автоматизированный процесс работы с нашими сервисами (например, автоматическая очистка кеша на CDN), используйте перманентный API-токен, создать который можно в личном кабинете.

Важно. Пожалуйста, обратитесь к API-документации продукта, чтобы проверить, поддерживает ли он перманентные API-токены.

Используйте заголовок APIKey перед сгенерированным токеном, например: Authorization: ‘APIKey 7711$eyJ0eXAiOiJKV’.

Как создать перманентный API-токен

Для одного аккаунта может быть выпущено не более 50 перманентных токенов. Для того, чтобы создать перманентный API-токен:

1. Нажмите на иконку профиля в левом нижнем углу страницы.

2. Выберите Профиль.

3. Откройте раздел API-токены.

4. Нажмите Создать токен.
Откроется форма создания API-токена.

5. В поле «Имя» укажите название создаваемого токена.

6. В поле «Описание» можно внести дополнительные сведения о токене. Это необязательное поле.

7. В разделе «Роль» укажите права, которые присваиваются создаваемому токену.

Важно! Пользователь может создать токен с ролью равной своей или ниже. Это значит, что пользователь с ролью User не может создать токен с ролью Administrators.

8. В разделе Срок действия выберите срок действия токена:

  • «Бессрочный» — срок действия токена неограничен.
  • «Задать срок действия» — при выборе этого пункта обязательно задайте срок истечения срока действия токена в поле ниже.

9. После заполнения всех обязательных полей кнопка Создать станет активной. Нажмите ее для генерации API-токена.

Откроется окно с API-токеном.

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

10. После того как вы сохранили сгенерированный токен нажмите Ок, токен скопирован. Информация о токене будет отображена в разделе API-токены.

Как удалить API-токен

Только пользователи с ролью Administrators могут удалять любые токены, выпущенными для аккаунта. Пользователи с другими ролями могут удалять только те токены, которые были выпущены только этими пользователями. Для того, чтобы удалить API-токен:

1. Нажмите на иконку профиля в левом нижнем углу страницы.

2. Выберите Профиль.

3. Откройте раздел API-токены.

4. Напротив необходимого API-токена нажмите на знак ··· и выберите Удалить API-токен.

Раздел API-токены

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

Важно! Только пользователи с ролью Administrators могут видеть и управлять всеми токенами, выпущенными для аккаунта. Пользователи с другими ролями видят и могут управлять только теми токенами, которые были выпущены этими пользователями.

Для быстрого поиска токена можно воспользоваться фильтрацией по:

  • пользователю, который выпустил токен — фильтр «Издатель»,
  • роли, присвоенной токену — фильтр «Роли»,
  • статусу токена: активный/истек/удален — фильтр «Статус».

Уведомления об истечении срока действия API-токенов

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

1. Нажмите на иконку профиля в левом нижнем углу страницы.

2. Выберите Профиль.

3. Откройте раздел Уведомления.

__________________.png

Пользователи уведомляются по почте:

  • за 7 дней до истечения токена,
  • за 1 день до истечения токена.

Раздел API-токены будет отмечен восклицательным знаком, если в аккаунте есть токены, которые истекают через 7 или менее дней.

В разделе API-токены напротив токенов, нуждающихся во внимании, будут стоять специальные символы:

  • если токен истекает через 7 или менее дней,
  • если токен уже истёк,
  • если токен удалён.

Особенности работы API-токена и SSO

При авторизации через SAML SSO наша система не располагает информацией о статусе разрешений, выданных пользователю провайдером.

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

Важно! Если вам необходимо ограничить доступ по перманентному API-токену для пользователя с авторизацией через SSO, удалите соответствующий токен из Личного кабинета.

API-токен

API-токен — это уникальный идентификатор, используемый для аутентификации приложений, разработчиков и пользователей при обращении к API.

Токен действует как ключ, позволяющий получить доступ к определенным функциям и данным в API. Он обеспечивает безопасность, поскольку управляет доступом к API и помогает предотвратить несанкционированный доступ.

Тени в интернете всегда следят за вами

5 декабря, 2023

Открытые API-токены предоставили полный доступ к ИИ-моделям Meta, Google и Microsoft

Утечка данных на Hugging Face раскрыла исходный код крупнейших проектов.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *