INTEGRITY Документация

Токен приложения

Cloudflare Access добавляет токен приложения ко всем аутентифицированным запросам к вашему источнику. Типичный JWT выглядит так:

eyJhbGciOiJSUzI1NiIsImtpZCI6IjkzMzhhYmUxYmFmMmZlNDkyZjY0.eyJhdWQiOlsiOTdlMmFhZ TEyMDEyMWY5MDJkZjhiYzk5ZmMzNDU5MTNh.zLYsHmLEginAQUXdygQo08gLTExWNXsN4jBc6PKdB

Как показано выше, JWT содержит три значения Base64-URL, разделённых точками:

Если ваше приложение не подключено к Access через Cloudflare Tunnel, оно должно проверить токен чтобы обеспечить безопасность вашего источника. Проверки одного заголовка недостаточно: необходимо также подтвердить JWT и подпись, чтобы избежать подмены личности.

{
	"alg": "RS256",
	"kid": "9338abe1baf2fe492f646a736f25afbf7b025e35c627be4f60c414d4c73069b8",
	"typ": "JWT"
}

Полезная нагрузка

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

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

{
	"aud": ["32eafc7626e974616deaf0dc3ce63d7bcbed58a2731e84d06bc3cdf1b53c4228"],
	"email": "[email protected]",
	"exp": 1659474457,
	"iat": 1659474397,
	"nbf": 1659474397,
	"iss": "https://yourteam.cloudflareaccess.com",
	"type": "app",
	"identity_nonce": "6ei69kawdKzMIAPF",
	"sub": "7335d417-61da-459d-899c-0a01c76a2f94",
	"country": "US"
}
Поле Описание
aud Application Audience (AUD) Tag приложения Access.
электронная почта Адрес электронной почты аутентифицированного пользователя, подтверждённый поставщиком идентификации.
exp Отметка времени истечения срока действия токена (Unix time).
iat Отметка времени выдачи токена (время Unix).
nbf Временная метка not-before для токена (в формате Unix time), по которой проверяется, что токен не был получен раньше положенного времени использования.
iss URL-адрес домена Cloudflare Access для приложения.
тип Тип токена Access (app для токена приложения или org для глобального токена сеанса).
identity_nonce Ключ кэша, используемый для получения личность пользователя.
sub ID пользователя. Это значение уникально для адреса электронной почты в рамках аккаунта. Пользователь получит другой sub если они удалён и повторно добавлены в вашу организацию Zero Trust, либо если они входят в другую организацию.
страна Страна, из которой пользователь прошёл аутентификацию.

Собственные атрибуты SAML и утверждения OIDC

Access позволяет добавлять в JWT собственные атрибуты SAML и утверждения OIDC для расширенной проверки, если это поддерживается вашим поставщиком идентификации. Это настраивается при настройке вашего SAML или OIDC поставщик. Группы поставщика идентификации включаются в токен, только если вы явно настроите groups как пользовательский атрибут SAML или утверждение OIDC. Access не добавляет их автоматически.

Личность пользователя

Личность пользователя полезна для проверки прав доступа к приложению. Например, ваше приложение может проверить, что пользователь состоит в группе Okta или Microsoft Entra ID, такой как Finance-Team.

Из-за ограничений на размер файлов cookie и соображений, связанных с пропускной способностью, токен приложения содержит лишь часть идентификационных данных пользователя. Чтобы получить полные идентификационные данные пользователя, отправьте CF_Authorization файл cookie в https://<your-team-name>.cloudflareaccess.com/cdn-cgi/access/get-identity. Ваш запрос должен быть структурирован следующим образом:

curl -H 'cookie: CF_Authorization=<user-token>' https://<your-team-name>.cloudflareaccess.com/cdn-cgi/access/get-identity

Access вернёт структуру JSON, содержащую следующие данные:

Поле Описание
электронная почта Адрес электронной почты пользователя.
idp Данные от вашего поставщика удостоверений.
geo Страна, из которой пользователь прошёл аутентификацию.
user_uuid ID пользователя.
devicePosture Атрибуты состояния устройства.
account_id ID аккаунта вашей организации.
iat Отметка времени, указывающая момент входа пользователя в систему.
ip IP-адрес пользователя.
auth_status Статус в случае аутентификации через mTLS.
common_name Значение Common Name в клиентском сертификате mTLS.
service_token_id Client ID сервисного токена, используемого для аутентификации.
service_token_status True, если аутентификация происходила через токен службы, а не через IdP.
is_warp True, если пользователь включил WARP.
is_gateway True, если пользователь включил Cloudflare One Client и прошёл аутентификацию в организации Zero Trust.
gateway_account_id Идентификатор, который Cloudflare One Client создаёт при аутентификации в команде Zero Trust.
device_id ID устройства, используемого для аутентификации.
версия Версия get-identity объект.
device_sessions Список всех сессий, инициированных пользователем.

Аутентификация по токену службы

{
	"type": "app",
	"aud": ["32eafc7626e974616deaf0dc3ce63d7bcbed58a2731e84d06bc3cdf1b53c4228"],
	"exp": 1659474457,
	"iss": "https://yourteam.cloudflareaccess.com",
	"common_name": "e367826f93b8d71185e03fe518aff3b4.access",
	"iat": 1659474397,
	"sub": ""
}
Поле Описание
тип Тип токена Access (app для токена приложения или org для глобального токена сеанса).
aud application audience (AUD) tag приложения Access.
exp Отметка времени истечения срока действия JWT (Unix time).
iss URL-адрес домена Cloudflare Access для приложения.
common_name Client ID сервисного токена (CF-Access-Client-Id).
iat Отметка времени выдачи JWT (время Unix).
sub Содержит пустую строку, если аутентификация выполнялась через токен службы.

Подпись

Cloudflare формирует подпись, подписывая закодированные заголовок и полезные данные с помощью алгоритма SHA-256 (RS256). В RS256 закрытый ключ подписывает JWT, а отдельный открытый ключ проверяет подпись.

Дополнительные сведения о JWT см. в jwt.io.