Как я могу использовать токены, сгенерированные как из встроенных, так и из пользовательских политик? - PullRequest
2 голосов
/ 21 июня 2019

У меня работают встроенные политики 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: Служба обнаружила внутреннюю ошибку. Пожалуйста, повторите аутентификацию и попробуйте снова.

...