Правило GenerateJWT

Вы просматриваете документацию по Apigee Edge.
Перейдите к документации по Apigee X.
Информация

Что

Создает подписанный токен JWT с настраиваемым набором утверждений. Затем JWT можно вернуть клиентам, передать целевым системам или использовать другими способами. Подробную информацию можно найти в статье Общие сведения о правилах JWS и JWT.

Видео

Посмотрите короткое видео о том, как создать подписанный JWT.

Примеры

Как создать токен 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>

Элементы <Password> и <Id> можно не указывать.

*Подробнее об алгоритмах шифрования подписи…

Справочник по элементу "Создать токен JWT"

В справочнике по правилам описаны элементы и атрибуты правила Generate JWT.

Примечание. Настройки будут немного отличаться в зависимости от используемого алгоритма шифрования. В разделе Примеры приведены конфигурации для разных случаев использования.

Атрибуты, которые применяются к элементу верхнего уровня

<GenerateJWT name="JWT" continueOnError="false" enabled="true" async="false">

Следующие атрибуты являются общими для всех родительских элементов правил.

Атрибут Описание По умолчанию Присутствие
name Внутреннее название правила. В названии можно использовать только следующие символы: A-Z0-9._\-$ %. Однако в интерфейсе управления Edge действуют дополнительные ограничения, например автоматически удаляются символы, не являющиеся буквенно-цифровыми.

При необходимости используйте элемент <displayname></displayname>, чтобы присвоить правилу в редакторе прокси-сервера управления другое название на естественном языке.

Н/Д Обязательно
continueOnError Если задано значение false, при сбое правила возвращается ошибка. Это ожидаемое поведение для большинства правил.

Установите значение true, чтобы выполнение потока продолжалось, даже если правило не сработало.

false Необязательно
включено Чтобы применить правило, задайте значение true.

Установите значение false, чтобы отключить правило. Правило не будет применяться, даже если оно прикреплено к потоку.

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
Присутствие Необязательно
Тип Целое число
Допустимые значения

Значение или ссылка на переменную потока, содержащую значение. Единицы времени можно указывать следующим образом:

  • ms – миллисекунды (по умолчанию);
  • s – секунды.
  • m – минуты.
  • h – часы.
  • d – дни.

Например, ExpiresIn=10d эквивалентно ExpiresIn=864000s.

<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". Пример: private.mypassword

<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". Пример: private.mykey

<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". Пример: private.mysecret

<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.
InvalidTypeForAdditionalClaim Если в дочернем элементе <Claim> элемента <AdditionalClaims> используется заявка не типа string, number, boolean или map, развертывание завершится неудачно.
MissingNameForAdditionalClaim Если название заявки не указано в дочернем элементе <Claim> элемента <AdditionalClaims>, развертывание завершится неудачно.
InvalidNameForAdditionalHeader Эта ошибка возникает, когда название требования, используемого в дочернем элементе <Claim> элемента <AdditionalClaims>, – alg или typ.
InvalidTypeForAdditionalHeader Если тип заявки, указанный в дочернем элементе <Claim> элемента <AdditionalClaims>, не относится к типу string, number, boolean или map, развертывание завершится неудачно.
InvalidValueOfArrayAttribute Эта ошибка возникает, когда значение атрибута массива в дочернем элементе <Claim> элемента <AdditionalClaims> не равно true или false.
InvalidConfigurationForActionAndAlgorithm Если элемент <PrivateKey> используется с алгоритмами семейства HS или элемент <SecretKey> используется с алгоритмами семейства RSA, развертывание завершится неудачно.
InvalidValueForElement Если значение, указанное в элементе <Algorithm>, не является допустимым значением, развертывание завершится неудачно.
MissingConfigurationElement Эта ошибка возникает, если элемент <PrivateKey> не используется с алгоритмами семейства RSA, а элемент <SecretKey> – с алгоритмами семейства HS.
InvalidKeyConfiguration Если дочерний элемент <Value> не определен в элементах <PrivateKey> или <SecretKey>, развертывание завершится неудачно.
EmptyElementForKeyConfiguration Если атрибут ref дочернего элемента <Value> элементов <PrivateKey> или <SecretKey> пуст или не указан, развертывание завершится неудачно.
InvalidVariableNameForSecret Эта ошибка возникает, если имя переменной потока, указанное в атрибуте ref дочернего элемента <Value> элементов <PrivateKey> или <SecretKey>, не содержит частный префикс (private.).
InvalidSecretInConfig Эта ошибка возникает, если дочерний элемент <Value> элементов <PrivateKey> или <SecretKey> не содержит частный префикс (private.).
InvalidTimeFormat Если значение, указанное в элементе <NotBefore>, не соответствует поддерживаемому формату, развертывание завершится неудачно.

Переменные неисправности

Эти переменные устанавливаются при возникновении ошибки во время выполнения. Дополнительные сведения см. в разделе Что нужно знать об ошибках политики .

Переменные Где Пример
fault.name=" fault_name " fault_name — это имя ошибки, как указано в таблице ошибок времени выполнения выше. Имя неисправности — это последняя часть кода неисправности. fault.name Matches "TokenExpired"
JWT.failed Все политики JWT устанавливают одну и ту же переменную в случае сбоя. JWT.failed = true

Пример ответа об ошибке

Коды ошибок политики JWT

Для обработки ошибок лучше всего перехватывать часть 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>