Создать политику JWT

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

Что

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

Видео

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

Образцы

Создайте 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>

Элементы <Password> и <Id> являются необязательными.

* Дополнительные сведения о требованиях к ключам см. в разделе Об алгоритмах шифрования подписи .

Ссылка на элемент для создания JWT

Справочник по политике описывает элементы и атрибуты политики «Создать JWT».

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

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

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

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

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

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

Н/Д Необходимый
продолжитьOnError Установите значение false , чтобы возвращать ошибку в случае сбоя политики. Это ожидаемое поведение для большинства политик.

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

ЛОЖЬ Необязательный
включено Установите значение true , чтобы обеспечить соблюдение политики.

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

истинный Необязательный
асинхронный Этот атрибут устарел. ЛОЖЬ Устарело

<ОтображаемоеИмя>

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

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

  • мс = миллисекунды (по умолчанию)
  • с = секунды
  • м = минуты
  • ч = часы
  • д = дни

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

<Идентификатор>

<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 отклонит как недействительную конфигурацию политики, в которой пароль указан в виде открытого текста. Переменная потока должна иметь префикс «частный». Например, private.mypassword

<Частный ключ/значение>

<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.mykey

<Секретный ключ/идентификатор>

<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.
Тип Нить
Допустимые значения Переменная потока, ссылающаяся на строку

Примечание. Если переменная потока, она должна иметь префикс «частный». Например, private.mysecret

<Тема>

<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 .
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>