Вы просматриваете документацию по Apigee Edge.
Перейдите к документации по Apigee X. Информация
Что
Создает подписанный токен JWT с настраиваемым набором утверждений. Затем JWT можно вернуть клиентам, передать целевым системам или использовать другими способами. Подробную информацию можно найти в статье Общие сведения о правилах JWS и JWT.
Видео
Посмотрите короткое видео о том, как создать подписанный JWT.
Примеры
- Сгенерируйте токен JWT, подписанный с помощью алгоритма HS256
- Сгенерируйте токен JWT, подписанный с помощью алгоритма RS256
Как создать токен JWT, подписанный алгоритмом HS256
В этом примере правил создается новый токен JWT и подписывается с помощью алгоритма HS256. Алгоритм HS256 использует общий секретный ключ для подписи и проверки подписи.
Когда это правило срабатывает, Edge кодирует заголовок и полезную нагрузку JWT, а затем ставит цифровую подпись. В видео выше показан полный пример, в том числе как подать запрос на исключение из правил.
Конфигурация правил, описанная здесь, создаст токен JWT со стандартным набором утверждений, как определено в спецификации JWT, включая срок действия в один час, а также дополнительное утверждение. Вы можете добавить столько дополнительных претензий, сколько нужно. Подробные сведения о требованиях и вариантах для каждого элемента в этом примере правил можно найти в справочнике элементов.
<GenerateJWT name="JWT-Generate-HS256"> <DisplayName>JWT Generate HS256</DisplayName> <Algorithm>HS256</Algorithm> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <SecretKey> <Value ref="private.secretkey"/> <Id>1918290</Id> </SecretKey> <ExpiresIn>1h</ExpiresIn> <Subject>monty-pythons-flying-circus</Subject> <Issuer>urn://apigee-edge-JWT-policy-test</Issuer> <Audience>fans</Audience> <Id/> <AdditionalClaims> <Claim name="show">And now for something completely different.</Claim> </AdditionalClaims> <OutputVariable>jwt-variable</OutputVariable> </GenerateJWT>
В результате будет создан токен JWT со следующим заголовком:
{
"typ" : "JWT",
"alg" : "HS256",
"kid" : "1918290"
}… и будет иметь полезную нагрузку, примерно такую:
{
"sub" : "monty-pythons-flying-circus",
"iss" : "urn://apigee-edge-JWT-policy-test",
"aud" : "show",
"iat" : 1506553019,
"exp" : 1506556619,
"jti" : "BD1FF263-3D25-4593-A685-5EC1326E1F37",
"show": "And now for something completely different."
}Значения утверждений iat, exp и jti будут различаться.
Как создать токен JWT, подписанный с помощью алгоритма RS256
В этом примере правил создается новый токен JWT и подписывается с помощью алгоритма RS256. Для создания подписи RS256 требуется закрытый ключ RSA, который должен быть представлен в формате PEM. В видео выше показан полный пример, в том числе как подать запрос на исключение из правил.
Когда это правило срабатывает, Edge кодирует и подписывает JWT, включая утверждения. Чтобы узнать больше о частях JWT и о том, как они шифруются и подписываются, ознакомьтесь с RFC7519.
<GenerateJWT name="JWT-Generate-RS256"> <Algorithm>RS256</Algorithm> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <PrivateKey> <Value ref="private.privatekey"/> <Password ref="private.privatekey-password"/> <Id ref="private.privatekey-id"/> </PrivateKey> <Subject>apigee-seattle-hatrack-montage</Subject> <Issuer>urn://apigee-edge-JWT-policy-test</Issuer> <Audience>urn://c60511c0-12a2-473c-80fd-42528eb65a6a</Audience> <ExpiresIn>60m</ExpiresIn> <Id/> <AdditionalClaims> <Claim name="show">And now for something completely different.</Claim> </AdditionalClaims> <OutputVariable>jwt-variable</OutputVariable> </GenerateJWT>
Как задать ключевые элементы
Элементы, которые вы используете для указания ключа, применяемого для создания JWT, зависят от выбранного алгоритма, как показано в таблице ниже.
| Алгоритм | Ключевые элементы | |
|---|---|---|
| HS{256/384/512}* | <SecretKey> <Value ref="private.secretkey"/> <Id>1918290</Id> </SecretKey> |
|
| RS/PS/ES{256/384/512}* | <PrivateKey> <Value ref="private.privatekey"/> <Password ref="private.privatekey-password"/> <Id ref="private.privatekey-id"/> </PrivateKey> Элементы |
|
| *Подробнее об алгоритмах шифрования подписи… | ||
Справочник по элементу "Создать токен JWT"
В справочнике по правилам описаны элементы и атрибуты правила Generate JWT.
Примечание. Настройки будут немного отличаться в зависимости от используемого алгоритма шифрования. В разделе Примеры приведены конфигурации для разных случаев использования.
Атрибуты, которые применяются к элементу верхнего уровня
<GenerateJWT name="JWT" continueOnError="false" enabled="true" async="false">
Следующие атрибуты являются общими для всех родительских элементов правил.
| Атрибут | Описание | По умолчанию | Присутствие |
|---|---|---|---|
| name |
Внутреннее название правила. В названии можно использовать только следующие символы:
A-Z0-9._\-$ %. Однако в интерфейсе управления Edge действуют дополнительные ограничения, например автоматически удаляются символы, не являющиеся буквенно-цифровыми.
При необходимости используйте элемент |
Н/Д | Обязательно |
| continueOnError |
Если задано значение false, при сбое правила возвращается ошибка. Это ожидаемое поведение для большинства правил.
Установите значение |
false | Необязательно |
| включено |
Чтобы применить правило, задайте значение true.
Установите значение |
true | Необязательно |
| асинхронный | Этот атрибут больше не поддерживается. | false | Поддержка прекращена |
<DisplayName>
<DisplayName>Policy Display Name</DisplayName>
Используйте этот атрибут вместе с атрибутом name, чтобы присвоить правилу в редакторе прокси-сервера в интерфейсе управления другое название на естественном языке.
| По умолчанию | Если вы не укажете этот элемент, будет использовано значение атрибута name правила. |
| Присутствие | Необязательно |
| Тип | Строка |
<Algorithm>
<Algorithm>algorithm-here</Algorithm>
Указывает алгоритм шифрования для подписи токена.
| По умолчанию | Н/Д |
| Присутствие | Обязательно |
| Тип | Строка |
| Допустимые значения | HS256, HS384, HS512, RS256, RS384, RS512, ES256, ES384, ES512, PS256, PS384, PS512 |
<Audience>
<Audience>audience-here</Audience> or: <Audience ref='variable_containing_audience'/>
Правило создает токен JWT, содержащий утверждение aud, для которого задано указанное значение. Это утверждение определяет получателей, для которых предназначен JWT. Это одно из зарегистрированных утверждений, упомянутых в RFC7519.
| По умолчанию | Н/Д |
| Присутствие | Необязательно |
| Тип | Массив (список значений, разделенных запятыми) |
| Допустимые значения | Любые данные, позволяющие идентифицировать аудиторию. |
<AdditionalClaims/Claim>
<AdditionalClaims> <Claim name='claim1'>explicit-value-of-claim-here</Claim> <Claim name='claim2' ref='variable-name-here'/> <Claim name='claim3' ref='variable-name-here' type='boolean'/> </AdditionalClaims> or: <AdditionalClaims ref='claim_payload'/>
Позволяет указать дополнительные пары "название утверждения/значение" в полезной нагрузке JWT. Вы можете указать утверждение в виде строки, числа, логического значения, карты или массива. Карта – это набор пар "имя-значение".
| По умолчанию | Н/Д |
| Присутствие | Необязательно |
| Допустимые значения | Любое значение, которое вы хотите использовать для дополнительного утверждения. Вы можете указать утверждение в виде строки, числа, логического значения, карты или массива. |
Элемент <Claim> принимает следующие атрибуты:
- name – (обязательный) название заявки.
- ref – название переменной потока (необязательный параметр). Если она присутствует, правило будет использовать значение этой переменной в качестве утверждения. Если указаны и атрибут ref, и явное значение утверждения, то по умолчанию используется явное значение. Оно также будет использоваться, если не удастся разрешить переменную потока, на которую ссылается атрибут ref.
- type – (необязательно) один из следующих вариантов: string (строка, по умолчанию), number (число), boolean (логическое значение) или map (карта).
- array – (необязательный параметр) установите значение true, чтобы указать, является ли значение массивом типов. Значение по умолчанию – false.
Если вы добавите элемент <Claim>, названия заявок будут заданы статически при настройке правила. Также можно передать объект JSON, чтобы указать названия утверждений.
Поскольку объект JSON передается как переменная, имена утверждений в сгенерированном токене JWT определяются во время выполнения.
Пример:
<AdditionalClaims ref='json_claims'/>
Переменная json_claims содержит объект JSON в следующем формате:
{ "sub" : "person@example.com", "iss" : "urn://secure-issuer@example.com", "non-registered-claim" : { "This-is-a-thing" : 817, "https://example.com/foobar" : { "p": 42, "q": false } } }
Сгенерированный токен JWT содержит все утверждения из объекта JSON.
<AdditionalHeaders/Claim>
<AdditionalHeaders> <Claim name='claim1'>explicit-value-of-claim-here</Claim> <Claim name='claim2' ref='variable-name-here'/> <Claim name='claim3' ref='variable-name-here' type='boolean'/> <Claim name='claim4' ref='variable-name' type='string' array='true'/> </AdditionalHeaders>
Добавляет в заголовок JWT дополнительные пары "название утверждения/значение".
| По умолчанию | Н/Д |
| Присутствие | Необязательно |
| Допустимые значения | Любое значение, которое вы хотите использовать для дополнительного утверждения. Вы можете указать утверждение в виде строки, числа, логического значения, карты или массива. |
Элемент <Claim> принимает следующие атрибуты:
- name – (обязательный) название заявки.
- ref – название переменной потока (необязательный параметр). Если она присутствует, правило будет использовать значение этой переменной в качестве утверждения. Если указаны и атрибут ref, и явное значение утверждения, то по умолчанию используется явное значение. Оно также будет использоваться, если не удастся разрешить переменную потока, на которую ссылается атрибут ref.
- type – (необязательно) один из следующих вариантов: string (строка, по умолчанию), number (число), boolean (логическое значение) или map (карта).
- array – (необязательный параметр) установите значение true, чтобы указать, является ли значение массивом типов. Значение по умолчанию – false.
<CriticalHeaders>
<CriticalHeaders>a,b,c</CriticalHeaders> or: <CriticalHeaders ref=’variable_containing_headers’/>
Добавляет в заголовок JWT критический заголовок crit. Заголовок crit представляет собой массив названий заголовков, которые должны быть известны и распознаны получателем JWT. Пример:
{
“typ: “...”,
“alg” : “...”,
“crit” : [ “a”, “b”, “c” ],
}Во время выполнения правило VerifyJWT проверяет заголовок crit.
Для каждого элемента, указанного в заголовке crit, проверяется, есть ли этот заголовок в элементе <KnownHeaders> правила VerifyJWT. Если в заголовке, который политика VerifyJWT находит в crit, нет записи в <KnownHeaders>, политика VerifyJWT завершается с ошибкой.
| По умолчанию | Н/Д |
| Присутствие | Необязательно |
| Тип | Массив строк, разделенных запятыми |
| Допустимые значения | Массив или название переменной, содержащей массив. |
<CustomClaims>
Примечание. В настоящее время элемент CustomClaims вставляется при добавлении нового правила GenerateJWT через интерфейс. Этот элемент не работает и игнорируется. Вместо него нужно использовать элемент <AdditionalClaims>. В будущем мы обновим интерфейс, чтобы в нем использовались правильные элементы.
<ExpiresIn>
<ExpiresIn>time-value-here</ExpiresIn>
Указывает срок действия JWT в миллисекундах, секундах, минутах, часах или днях.
| По умолчанию | N/A |
| Присутствие | Необязательно |
| Тип | Целое число |
| Допустимые значения |
Значение или ссылка на переменную потока, содержащую значение. Единицы времени можно указывать следующим образом:
Например, |
<Id>
<Id>explicit-jti-value-here</Id> -or- <Id ref='variable-name-here'/> -or- <Id/>
Создает токен JWT с определенным утверждением jti. Если текстовое значение и атрибут ref пустые, правило сгенерирует jti, содержащий случайный UUID. Заявление JWT ID (jti) – это уникальный идентификатор JWT. Дополнительную информацию о jti можно найти в RFC7519.
| По умолчанию | Н/Д |
| Присутствие | Необязательно |
| Тип | Строка или ссылка. |
| Допустимые значения | Строка или название переменной потока, содержащей идентификатор. |
<IgnoreUnresolvedVariables>
<IgnoreUnresolvedVariables>true|false</IgnoreUnresolvedVariables>
Установите значение false, если вы хотите, чтобы при невозможности разрешить любую переменную, указанную в правиле, возникала ошибка. Если задано значение true, все переменные, которые не удается разрешить, будут считаться пустыми строками (null).
| По умолчанию | False |
| Присутствие | Необязательно |
| Тип | Логическое значение |
| Допустимые значения | true или false |
<Issuer>
<Issuer ref='variable-name-here'/> <Issuer>issuer-string-here</Issuer>
Правило создает токен JWT,содержащий утверждение с названием iss и указанным значением. Заявление, идентифицирующее издателя токена JWT. Это одно из зарегистрированных утверждений, упомянутых в RFC7519.
| По умолчанию | Н/Д |
| Присутствие | Необязательно |
| Тип | Строка или ссылка |
| Допустимые значения | Все |
<NotBefore>
<!-- Specify an absolute time. --> <NotBefore>2017-08-14T11:00:21-07:00</NotBefore> -or- <!-- Specify a time relative to when the token is generated. --> <NotBefore>6h</NotBefore>
Указывает время, когда токен становится действительным. Токен недействителен до указанного времени. Вы можете указать абсолютное время или время относительно момента создания токена.
| По умолчанию | Н/Д |
| Присутствие | Необязательно |
| Тип | Строка |
| Допустимые значения | Инструкции приводятся ниже. |
Допустимые значения времени для элемента NotBefore при использовании абсолютных значений времени
| Название | Формат | Пример |
| сортируемый | yyyy-MM-dd'T'HH:mm:ss.SSSZ |
2017-08-14T11:00:21.269-0700 |
| RFC 1123 | EEE, dd MMM yyyy HH:mm:ss zzz |
Mon, 14 Aug 2017 11:00:21 PDT |
| RFC 850 | EEEE, dd-MMM-yy HH:mm:ss zzz |
Понедельник, 14 августа 2017 г., 11:00:21 (тихоокеанское летнее время) |
| ANCI-C | EEE MMM d HH:mm:ss yyyy |
Mon Aug 14 11:00:21 2017 |
Для относительных значений времени укажите целое число и период времени, например:
- 10 сек.
- 60 м
- 12 ч.
<OutputVariable>
<OutputVariable>jwt-variable</OutputVariable>
Указывает, куда поместить токен JWT, созданный этим правилом. По умолчанию он помещается в переменную потока jwt.POLICYNAME.generated_jwt.
| По умолчанию | jwt.POLICYNAME.generated_jwt |
| Присутствие | Необязательно |
| Тип | Строка (название переменной процесса) |
<PrivateKey/Id>
<PrivateKey> <Id ref="flow-variable-name-here"/> </PrivateKey> or <PrivateKey> <Id>your-id-value-here</Id> </PrivateKey>
Указывает идентификатор ключа (kid), который нужно включить в заголовок JWT. Используйте только в том случае, если алгоритм относится к одному из следующих типов: RS256/RS384/RS512, PS256/PS384/PS512 или ES256/ES384/ES512.
| По умолчанию | Н/Д |
| Присутствие | Необязательно |
| Тип | Строка |
| Допустимые значения | Переменная потока или строка |
<PrivateKey/Password>
<PrivateKey> <Password ref="private.privatekey-password"/> </PrivateKey>
При необходимости укажите пароль, который будет использоваться в правиле для расшифровки закрытого ключа. Используйте атрибут ref, чтобы передать ключ в переменную потока. Используйте только в том случае, если алгоритм относится к одному из следующих типов: RS256/RS384/RS512, PS256/PS384/PS512 или ES256/ES384/ES512.
| По умолчанию | Н/Д |
| Присутствие | Необязательно |
| Тип | Строка |
| Допустимые значения |
Ссылка на переменную потока.
Примечание. Вам необходимо указать переменную потока. Edge отклонит как недопустимую конфигурацию правил, в которой пароль указан в виде обычного текста. Переменная потока должна иметь префикс "private". Пример: |
<PrivateKey/Value>
<PrivateKey> <Value ref="private.variable-name-here"/> </PrivateKey>
Указывает закрытый ключ в формате PEM, используемый для подписи JWT. Используйте атрибут ref, чтобы передать ключ в переменную потока. Используйте только в том случае, если алгоритм относится к одному из следующих типов: RS256/RS384/RS512, PS256/PS384/PS512 или ES256/ES384/ES512.
| По умолчанию | Н/Д |
| Присутствие | Требуется для создания JWT с помощью алгоритма RS256. |
| Тип | Строка |
| Допустимые значения |
Переменная потока, содержащая строку, представляющую значение закрытого ключа RSA, закодированное в формате PEM.
Примечание. Переменная потока должна иметь префикс "private". Пример:
|
<SecretKey/Id>
<SecretKey> <Id ref="flow-variable-name-here"/> </SecretKey> or <SecretKey> <Id>your-id-value-here</Id> </SecretKey>
Указывает идентификатор ключа (kid), который нужно включить в заголовок JWT, подписанного с помощью алгоритма HMAC. Используйте только в том случае, если алгоритм – HS256, HS384 или HS512.
| По умолчанию | Н/Д |
| Присутствие | Необязательно |
| Тип | Строка |
| Допустимые значения | Переменная потока или строка |
<SecretKey/Value>
<SecretKey> <Value ref="private.your-variable-name"/> </SecretKey>
Содержит секретный ключ, используемый для проверки или подписи токенов с помощью алгоритма HMAC. Используйте только в том случае, если алгоритм – HS256, HS384 или HS512. Используйте атрибут ref, чтобы передать ключ в переменную потока.
Edge обеспечивает минимальную надежность ключа для алгоритмов HS256/HS384/HS512. Минимальная длина ключа для HS256 составляет 32 байта, для HS384 – 48 байтов, а для HS512 – 64 байта. Использование ключа с меньшей длиной приведет к ошибке во время выполнения.
| По умолчанию | Н/Д |
| Присутствие | Требуется для алгоритмов HMAC. |
| Тип | Строка |
| Допустимые значения |
Переменная процесса, ссылающаяся на строку.
Примечание. Если это переменная потока, она должна иметь префикс "private". Пример: |
<Subject>
<Subject>subject-string-here</Subject>
<Subject ref="flow_variable" />
Пример:
<Subject ref="apigee.developer.email"/>
Правило создает токен JWT, содержащий утверждение sub, для которого задано указанное значение.Это утверждение идентифицирует или делает заявление о субъекте токена JWT. Это одно из стандартных утверждений, упомянутых в RFC7519.
| По умолчанию | Н/Д |
| Присутствие | Необязательно |
| Тип | Строка |
| Допустимые значения | Любое значение, которое уникальным образом идентифицирует объект или переменную потока, ссылающуюся на значение. |
Переменные процесса
Правило Generate JWT не задает переменные потока.
Справочник по ошибкам
В этом разделе описаны коды ошибок и сообщения об ошибках, которые возвращаются, а также переменные ошибок, которые задаются Edge, когда это правило вызывает ошибку. Эта информация важна, если вы разрабатываете правила обработки ошибок. Подробнее о том, что нужно знать об ошибках в правилах и об обработке ошибок…
Ошибки времени выполнения
Эти ошибки могут возникать при выполнении правил.
| Код ошибки | Статус HTTP | Когда возникает |
|---|---|---|
steps.jwt.AlgorithmInTokenNotPresentInConfiguration |
401 | Возникает, когда в правиле проверки используется несколько алгоритмов. |
steps.jwt.AlgorithmMismatch |
401 | Алгоритм, указанный в правиле Generate, не совпадает с алгоритмом, ожидаемым в правиле Verify. Указанные алгоритмы должны совпадать. |
steps.jwt.FailedToDecode |
401 | Правило не смогло декодировать JWT. Возможно, JWT поврежден. |
steps.jwt.GenerationFailed |
401 | Правило не смогло сгенерировать JWT. |
steps.jwt.InsufficientKeyLength |
401 | Для ключа размером менее 32 байт для алгоритма HS256, менее 48 байт для алгоритма HS386 и менее 64 байт для алгоритма HS512. |
steps.jwt.InvalidClaim |
401 | Если отсутствует или не совпадает утверждение, заголовок или значение заголовка. |
steps.jwt.InvalidCurve |
401 | Кривая, указанная ключом, не подходит для алгоритма на основе эллиптических кривых. |
steps.jwt.InvalidJsonFormat |
401 | В заголовке или полезной нагрузке найден недопустимый код JSON. |
steps.jwt.InvalidToken |
401 | Эта ошибка возникает, когда не удается проверить подпись JWT. |
steps.jwt.JwtAudienceMismatch |
401 | Не удалось проверить утверждение аудитории в токене. |
steps.jwt.JwtIssuerMismatch |
401 | При проверке токена не удалось подтвердить утверждение издателя. |
steps.jwt.JwtSubjectMismatch |
401 | Не удалось проверить утверждение subject в токене. |
steps.jwt.KeyIdMissing |
401 | Правило Verify использует JWKS в качестве источника открытых ключей, но подписанный JWT не содержит свойство kid в заголовке. |
steps.jwt.KeyParsingFailed |
401 | Не удалось проанализировать открытый ключ на основе предоставленной информации. |
steps.jwt.NoAlgorithmFoundInHeader |
401 | Возникает, когда в токене JWT нет заголовка алгоритма. |
steps.jwt.NoMatchingPublicKey |
401 | Правило Verify использует JWKS в качестве источника открытых ключей, но kid
в подписанном JWT не указан в JWKS. |
steps.jwt.SigningFailed |
401 | В GenerateJWT для ключа, размер которого меньше минимального для алгоритмов HS384 или HS512 |
steps.jwt.TokenExpired |
401 | Правило пытается проверить токен, срок действия которого истек. |
steps.jwt.TokenNotYetValid |
401 | Токен ещё не действителен. |
steps.jwt.UnhandledCriticalHeader |
401 | Заголовок, найденный правилом Verify JWT в заголовке crit, не указан в KnownHeaders. |
steps.jwt.UnknownException |
401 | Произошло неизвестное исключение. |
steps.jwt.WrongKeyType |
401 | Указан ключ неправильного типа. Например, если вы укажете ключ RSA для алгоритма на эллиптических кривых или ключ на эллиптических кривых для алгоритма RSA. |
Ошибки развертывания
Эти ошибки могут возникать при развертывании прокси-сервера, содержащего это правило.
| Название ошибки | Причина | Исправить |
|---|---|---|
InvalidNameForAdditionalClaim |
Развертывание завершится неудачно, если в дочернем элементе <Claim> элемента <AdditionalClaims> используется одно из следующих зарегистрированных имен: kid, iss, sub, aud, iat, exp, nbf или jti.
|
build |
InvalidTypeForAdditionalClaim |
Если в дочернем элементе <Claim> элемента <AdditionalClaims> используется заявка не типа string, number, boolean или map, развертывание завершится неудачно.
|
build |
MissingNameForAdditionalClaim |
Если название заявки не указано в дочернем элементе <Claim> элемента <AdditionalClaims>, развертывание завершится неудачно.
|
build |
InvalidNameForAdditionalHeader |
Эта ошибка возникает, когда название требования, используемого в дочернем элементе <Claim> элемента <AdditionalClaims>, – alg или typ.
|
build |
InvalidTypeForAdditionalHeader |
Если тип заявки, указанный в дочернем элементе <Claim> элемента <AdditionalClaims>, не относится к типу string, number, boolean или map, развертывание завершится неудачно.
|
build |
InvalidValueOfArrayAttribute |
Эта ошибка возникает, когда значение атрибута массива в дочернем элементе <Claim> элемента <AdditionalClaims> не равно true или false.
|
build |
InvalidConfigurationForActionAndAlgorithm |
Если элемент <PrivateKey> используется с алгоритмами семейства HS или элемент <SecretKey> используется с алгоритмами семейства RSA, развертывание завершится неудачно.
|
build |
InvalidValueForElement |
Если значение, указанное в элементе <Algorithm>, не является допустимым значением, развертывание завершится неудачно.
|
build |
MissingConfigurationElement |
Эта ошибка возникает, если элемент <PrivateKey> не используется с алгоритмами семейства RSA, а элемент <SecretKey> – с алгоритмами семейства HS.
|
build |
InvalidKeyConfiguration |
Если дочерний элемент <Value> не определен в элементах <PrivateKey> или <SecretKey>, развертывание завершится неудачно.
|
build |
EmptyElementForKeyConfiguration |
Если атрибут ref дочернего элемента <Value> элементов <PrivateKey> или <SecretKey> пуст или не указан, развертывание завершится неудачно.
|
build |
InvalidVariableNameForSecret |
Эта ошибка возникает, если имя переменной потока, указанное в атрибуте ref дочернего элемента <Value> элементов <PrivateKey> или <SecretKey>, не содержит частный префикс (private.).
|
build |
InvalidSecretInConfig |
Эта ошибка возникает, если дочерний элемент <Value> элементов <PrivateKey> или <SecretKey> не содержит частный префикс (private.).
|
build |
InvalidTimeFormat |
Если значение, указанное в элементе <NotBefore>, не соответствует поддерживаемому формату, развертывание завершится неудачно.
|
build |
Переменные неисправности
Эти переменные устанавливаются при возникновении ошибки во время выполнения. Дополнительные сведения см. в разделе Что нужно знать об ошибках политики .
| Переменные | Где | Пример |
|---|---|---|
fault.name=" fault_name " | fault_name — это имя ошибки, как указано в таблице ошибок времени выполнения выше. Имя неисправности — это последняя часть кода неисправности. | fault.name Matches "TokenExpired" |
JWT.failed | Все политики JWT устанавливают одну и ту же переменную в случае сбоя. | JWT.failed = true |
Пример ответа об ошибке
Для обработки ошибок лучше всего перехватывать часть errorcode в ответе на ошибку. Не полагайтесь на текст в faultstring , поскольку он может измениться.
Пример правила неисправности
<FaultRules>
<FaultRule name="JWT Policy Errors">
<Step>
<Name>JavaScript-1</Name>
<Condition>(fault.name Matches "TokenExpired")</Condition>
</Step>
<Condition>JWT.failed=true</Condition>
</FaultRule>
</FaultRules>