Вы просматриваете документацию Apigee Edge .
Перейдите к документации Apigee X. информация
Что
Создает подписанный JWT с настраиваемым набором утверждений. Затем JWT можно вернуть клиентам, передать на серверные цели или использовать другими способами. Подробное описание см. в обзоре политик JWS и JWT .
Видео
Посмотрите короткое видео, чтобы узнать, как создать подписанный JWT.
Образцы
- Создайте JWT, подписанный с помощью алгоритма HS256.
- Создайте JWT, подписанный с помощью алгоритма RS256.
Создайте JWT, подписанный с помощью алгоритма HS256.
В этом примере политики создается новый JWT и подписывается его с использованием алгоритма HS256. HS256 использует общий секрет как для подписания, так и для проверки подписи.
Когда это действие политики срабатывает, Edge кодирует заголовок JWT и полезную нагрузку, а затем подписывает JWT цифровой подписью. Полный пример смотрите в видеоролике выше, в том числе о том, как сделать запрос в политику.
Приведенная здесь конфигурация политики создаст JWT с набором стандартных утверждений, определенных спецификацией JWT, включая срок действия 1 час, а также дополнительное утверждение. Вы можете включить столько дополнительных претензий, сколько пожелаете. Подробную информацию о требованиях и параметрах для каждого элемента в этом образце политики см. в справочнике по элементам.
<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> | |
РС/ПС/ЭС{256/384/512} * | <PrivateKey> <Value ref="private.privatekey"/> <Password ref="private.privatekey-password"/> <Id ref="private.privatekey-id"/> </PrivateKey> Элементы | |
* Дополнительные сведения о требованиях к ключам см. в разделе Об алгоритмах шифрования подписи . |
Ссылка на элемент для создания JWT
Справочник по политике описывает элементы и атрибуты политики «Создать JWT».
Примечание. Конфигурация будет несколько отличаться в зависимости от используемого вами алгоритма шифрования. В примерах приведены примеры , демонстрирующие конфигурации для конкретных случаев использования.
Атрибуты, которые применяются к элементу верхнего уровня
<GenerateJWT name="JWT" continueOnError="false" enabled="true" async="false">
Следующие атрибуты являются общими для всех родительских элементов политики.
Атрибут | Описание | По умолчанию | Присутствие |
---|---|---|---|
имя | Внутреннее имя политики. В имени можно использовать следующие символы: A-Z0-9._\-$ % . Однако пользовательский интерфейс управления Edge накладывает дополнительные ограничения, например автоматическое удаление символов, не являющихся буквенно-цифровыми. При необходимости используйте элемент | Н/Д | Необходимый |
продолжитьOnError | Установите значение false , чтобы возвращать ошибку в случае сбоя политики. Это ожидаемое поведение для большинства политик. Установите значение | ЛОЖЬ | Необязательный |
включено | Установите значение true , чтобы обеспечить соблюдение политики. Установите значение | истинный | Необязательный |
асинхронный | Этот атрибут устарел. | ЛОЖЬ | Устарело |
<ОтображаемоеИмя>
<DisplayName>Policy Display Name</DisplayName>
Используйте в дополнение к атрибуту name, чтобы пометить политику в редакторе прокси-сервера пользовательского интерфейса управления другим именем на естественном языке.
По умолчанию | Если вы опустите этот элемент, будет использовано значение атрибута имени политики. |
Присутствие | Необязательный |
Тип | Нить |
<Алгоритм>
<Algorithm>algorithm-here</Algorithm>
Указывает алгоритм шифрования для подписи токена.
По умолчанию | Н/Д |
Присутствие | Необходимый |
Тип | Нить |
Допустимые значения | HS256, HS384, HS512, RS256, RS384, RS512, ES256, ES384, ES512, PS256, PS384, PS512 |
<Аудитория>
<Audience>audience-here</Audience> or: <Audience ref='variable_containing_audience'/>
Политика создает JWT, содержащий утверждение аудита , которому присвоено указанное значение. Это утверждение идентифицирует получателей, для которых предназначен JWT. Это одно из зарегистрированных утверждений, упомянутых в RFC7519 .
По умолчанию | Н/Д |
Присутствие | Необязательный |
Тип | Массив (список значений, разделенных запятыми) |
Допустимые значения | Все, что идентифицирует аудиторию. |
<Дополнительные утверждения/заявки>
<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 , и явное значение утверждения, явное значение является значением по умолчанию и используется, если указанная переменная потока неразрешена.
- тип — (необязательно) Одно из: строка (по умолчанию), число, логическое значение или карта.
- массив — (необязательно). Установите значение true , чтобы указать, является ли значение массивом типов. По умолчанию: ложь.
Если вы включите элемент <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 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 , и явное значение утверждения, явное значение является значением по умолчанию и используется, если указанная переменная потока неразрешена.
- тип — (необязательно) Одно из: строка (по умолчанию), число, логическое значение или карта.
- массив — (необязательно). Установите значение true , чтобы указать, является ли значение массивом типов. По умолчанию: ложь.
<Критические заголовки>
<CriticalHeaders>a,b,c</CriticalHeaders> or: <CriticalHeaders ref=’variable_containing_headers’/>
Добавляет критический заголовок crit в заголовок JWT. Критический заголовок — это массив имен заголовков, которые должны быть известны и распознаны получателем JWT. Например:
{ “typ: “...”, “alg” : “...”, “crit” : [ “a”, “b”, “c” ], }
Во время выполнения политика VerifyJWT проверяет критический заголовок. Для каждого элемента, указанного в критическом заголовке, он проверяет, что элемент <KnownHeaders>
политики VerifyJWT также содержит этот заголовок. Любой заголовок, который политика VerifyJWT обнаруживает в критическом состоянии и который также не указан в <KnownHeaders>
, приводит к сбою политики VerifyJWT.
По умолчанию | Н/Д |
Присутствие | Необязательный |
Тип | Массив строк, разделенных запятыми |
Допустимые значения | Либо массив, либо имя переменной, содержащей массив. |
<CustomClaims>
Примечание. В настоящее время элемент CustomClaims вставляется при добавлении новой политики GenerateJWT через пользовательский интерфейс. Этот элемент не функционален и игнорируется. Вместо этого правильнее использовать элемент <AdditionalClaims> . Пользовательский интерфейс будет обновлен для вставки правильных элементов позже.
<Истекает>
<ExpiresIn>time-value-here</ExpiresIn>
Указывает срок жизни JWT в миллисекундах, секундах, минутах, часах или днях.
По умолчанию | N/A |
Присутствие | Необязательный |
Тип | Целое число |
Допустимые значения | Значение или ссылка на переменную потока, содержащую это значение. Единицы времени можно указать следующим образом:
Например, |
<Идентификатор>
<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>true|false</IgnoreUnresolvedVariables>
Установите значение false, если вы хотите, чтобы политика выдавала ошибку, когда любая ссылочная переменная, указанная в политике, неразрешима. Установите значение true, чтобы рассматривать любую неразрешимую переменную как пустую строку (ноль).
По умолчанию | ЛОЖЬ |
Присутствие | Необязательный |
Тип | логическое значение |
Допустимые значения | правда или ложь |
<Эмитент>
<Issuer ref='variable-name-here'/> <Issuer>issuer-string-here</Issuer>
Политика создает JWT, содержащий утверждение с именем iss и значением, равным указанному значению. Утверждение, идентифицирующее эмитента JWT. Это один из зарегистрированных наборов утверждений, упомянутых в RFC7519 .
По умолчанию | Н/Д |
Присутствие | Необязательный |
Тип | Строка или ссылка |
Допустимые значения | Любой |
<НеПрежде>
<!-- 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 | Пн, 14 августа 2017 г., 11:00:21 PDT |
РФК 850 | EEEE, dd-MMM-yy HH:mm:ss zzz | Понедельник, 14 августа 2017 года, 11:00:21 PDT |
АНЦИ-С | EEE MMM d HH:mm:ss yyyy | Пн 14 авг 11:00:21 2017 |
Для относительных значений времени укажите целое число и период времени, например:
- 10 с
- 60 м
- 12 часов
<Выходная переменная>
<OutputVariable>jwt-variable</OutputVariable>
Указывает, где разместить JWT, созданный этой политикой. По умолчанию он помещается в переменную потока jwt. POLICYNAME .generated_jwt
.
По умолчанию | jwt. POLICYNAME .generated_jwt |
Присутствие | Необязательный |
Тип | Строка (имя переменной потока) |
<Частный ключ/идентификатор>
<PrivateKey> <Id ref="flow-variable-name-here"/> </PrivateKey> or <PrivateKey> <Id>your-id-value-here</Id> </PrivateKey>
Указывает идентификатор ключа (ребенок), который нужно включить в заголовок JWT. Используйте только в том случае, если используется один из алгоритмов: RS256/RS384/RS512, PS256/PS384/PS512 или ES256/ES384/ES512.
По умолчанию | Н/Д |
Присутствие | Необязательный |
Тип | Нить |
Допустимые значения | Переменная потока или строка |
<Частный ключ/пароль>
<PrivateKey> <Password ref="private.privatekey-password"/> </PrivateKey>
Укажите пароль, который политика должна использовать для расшифровки закрытого ключа, если это необходимо. Используйте атрибут ref для передачи ключа в переменной потока. Используйте только в том случае, если используется один из алгоритмов: RS256/RS384/RS512, PS256/PS384/PS512 или ES256/ES384/ES512.
По умолчанию | Н/Д |
Присутствие | Необязательный |
Тип | Нить |
Допустимые значения | Ссылка на переменную потока. Примечание. Необходимо указать переменную потока. Edge отклонит как недействительную конфигурацию политики, в которой пароль указан в виде открытого текста. Переменная потока должна иметь префикс «частный». Например, |
<Частный ключ/значение>
<PrivateKey> <Value ref="private.variable-name-here"/> </PrivateKey>
Указывает закрытый ключ в формате PEM, используемый для подписи JWT. Используйте атрибут ref для передачи ключа в переменной потока. Используйте только в том случае, если используется один из алгоритмов: RS256/RS384/RS512, PS256/PS384/PS512 или ES256/ES384/ES512.
По умолчанию | Н/Д |
Присутствие | Требуется для генерации JWT с использованием алгоритма RS256. |
Тип | Нить |
Допустимые значения | Переменная потока, содержащая строку, представляющую значение закрытого ключа RSA в кодировке PEM. Примечание. Переменная потока должна иметь префикс «частный». Например, |
<Секретный ключ/идентификатор>
<SecretKey> <Id ref="flow-variable-name-here"/> </SecretKey> or <SecretKey> <Id>your-id-value-here</Id> </SecretKey>
Указывает идентификатор ключа (kid), который необходимо включить в заголовок JWT файла JWT, подписанного с помощью алгоритма HMAC. Используйте только в том случае, если используется один из алгоритмов HS256/HS384/HS512.
По умолчанию | Н/Д |
Присутствие | Необязательный |
Тип | Нить |
Допустимые значения | Переменная потока или строка |
<Секретный ключ/значение>
<SecretKey> <Value ref="private.your-variable-name"/> </SecretKey>
Предоставляет секретный ключ, используемый для проверки или подписи токенов с помощью алгоритма HMAC. Используйте только в том случае, если используется один из алгоритмов HS256/HS384/HS512. Используйте атрибут ref для передачи ключа в переменной потока.
Edge обеспечивает минимальную стойкость ключа для алгоритмов HS256/HS384/HS512. Минимальная длина ключа для HS256 — 32 байта, для HS384 — 48 байт, а для HS512 — 64 байта. Использование ключа более низкого уровня вызывает ошибку во время выполнения.
По умолчанию | Н/Д |
Присутствие | Требуется для алгоритмов HMAC. |
Тип | Нить |
Допустимые значения | Переменная потока, ссылающаяся на строку Примечание. Если переменная потока, она должна иметь префикс «частный». Например, |
<Тема>
<Subject>subject-string-here</Subject>
<Subject ref="flow_variable" />
Например:
<Subject ref="apigee.developer.email"/>
Политика создает JWT, содержащий вложенное утверждение, которому присвоено указанное значение. Это утверждение идентифицирует или делает заявление о предмете JWT. Это один из стандартных наборов утверждений, упомянутых в RFC7519 .
По умолчанию | Н/Д |
Присутствие | Необязательный |
Тип | Нить |
Допустимые значения | Любое значение, однозначно идентифицирующее субъект или переменную потока, ссылающуюся на значение. |
Переменные потока
Политика «Создать JWT» не устанавливает переменные потока.
Ссылка на ошибку
В этом разделе описаны коды ошибок и сообщения об ошибках, которые возвращаются, а также переменные ошибок, которые устанавливаются Edge, когда эта политика вызывает ошибку. Эту информацию важно знать, если вы разрабатываете правила обработки ошибок. Дополнительные сведения см. в разделах Что нужно знать об ошибках политики и Обработка ошибок .
Ошибки выполнения
Эти ошибки могут возникнуть при выполнении политики.
Код неисправности | Статус HTTP | Происходит, когда |
---|---|---|
steps.jwt.AlgorithmInTokenNotPresentInConfiguration | 401 | Происходит, когда политика проверки имеет несколько алгоритмов. |
steps.jwt.AlgorithmMismatch | 401 | Алгоритм, указанный в политике «Создать», не соответствует ожидаемому в политике «Проверка». Указанные алгоритмы должны совпадать. |
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 | Субъект претензии не прошел проверку токена. |
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>