У меня работают встроенные политики ADB2C. Исходя из этого, я аутентифицирую своих конечных пользователей и генерирую токены JWT для вызова API через APIM, настроенный с помощью OpenId Connect. Я сейчас настраиваю пользовательские политики (IEF) благодаря стартовому набору, но, похоже, параллельно он не работает должным образом.
Со встроенными политиками все ок. Но когда я пытаюсь использовать токены, сгенерированные с помощью IEF, даже если все утверждения совпадают, я всегда получаю сообщение об ошибке 401 «В этом запросе отказано в авторизации».
После быстрого просмотра сгенерированного токена я увидел, что ключ для подписи токена отличается от ключа для встроенных сгенерированных токенов.
Это, конечно, откуда ошибка. Действительно, при настройке пользовательских политик нам необходимо создать «ключи политики» для подписи и шифрования токенов. И по умолчанию он генерируется, так что отличается от встроенных. Но я не знаю, как это исправить!
Обратите внимание, что мне действительно нужно иметь одинаковые ключи подписи и шифрования для встроенных и пользовательских политик, поскольку в APIM я могу использовать только 1 URI метаданных для конфигурации OpenId Connect и 1 URL-адрес конфигурации в разделе политики проверки работы API.
Обратите внимание, что я не нашел способа получить текущий ключ шифрования (используемый встроенными политиками) для токенов обновления. Проблема та же ...
Спасибо за вашу помощь!
Вот правильный заголовок токена, включая ключ подписи:
{
"typ": "JWT",
"alg": "RS256",
"kid": "X5eXk4xyojNFum1kl2Ytv8dlNP4-c57dO6QGTVBwaNk"
}
В настоящее время ребенок, сгенерированный моим ключом политики, является "6jQvK3Cr-pdfMP9ozewO3dnmizxxx_toYfjEnxVpJFs"
Когда я пытаюсь загрузить тот же ключ, который могу найти, просмотрев URI метаданных https://mydomain/tenantId/discovery/v2.0/keys?p=a_ief_policy_name,, он правильно загружен
{
keys: [
{
kid: "X5eXk4xyojNFum1kl2Ytv8dlNP4-c57dO6QGTVBwaNk",
nbf: 1493763266,
use: "sig",
kty: "RSA",
e: "AQAB",
n: "tVKUtcx_n9rt[...]VTVSR0hiXudFlfQ2rOhPlpObmku68lXw-7V-P7jwrQRFfQVXw"
}
]
}
Но при получении ответа на запрос входа я получил ошибку:
AADB2C90085: Служба обнаружила внутреннюю ошибку. Пожалуйста, повторите аутентификацию и попробуйте снова.