Токен Azure B2C IdP-Access не работает с IDX10511: не удалось выполнить проверку подписи

Я добавил рабочий корпоративный логин (EntraId) для своей компании в Azure AD B2C с настраиваемыми политиками. Теперь я могу войти в систему и добавить токен доступа к утверждениям, которые я отправил с моими API-вызовами Microsoft Learn.

Я извлекаю этот токен из заявок моего id-токена b2c-iss и добавляю его в заголовок своих запросов. В ответ получаю 401 (Неавторизованный) с описанием:

Ошибка аутентификации: IDX10511: проверка подписи не удалась. Ключи попробовал: '[PII типа 'System.Text.StringBuilder' скрыт. Для большего подробности см. https://aka.ms/IdentityModel/PII.]'.

Это токен, который я получаю:

{
  "typ": "JWT",
  "nonce": "<some id>",
  "alg": "RS256",
  "x5t": "<some id>",
  "kid": "<some id>"
}.{
  "aud": "00000003-0000-0000-c000-000000000000",
  "iss": "https://sts.windows.net/<tenantId>/",
  "iat": <some data>,
  "nbf": <some data>,
  "exp": <some data>,
  "acct": 0,
  "acr": "1",
  "aio": "<some id>",
  "amr": [
    "pwd"
  ],
  "app_displayname": "<display name>",
  "appid": "<app id>",
  "appidacr": "1",
  "family_name": "<my family name>",
  "given_name": "<my given name>",
  "idtyp": "user",
  "ipaddr": "<ip address>",
  "name": "<my name>",
  "oid": "<object id>",
  "onprem_sid": "<some id>",
  "platf": "3",
  "puid": "<some id>",
  "rh": "0.xy.",
  "scp": "email openid profile User.Read",
  "signin_state": [
    "inknownntwk",
    "kmsi"
  ],
  "sub": "<some id>",
  "tenant_region_scope": "EU",
  "tid": "<tenant id>",
  "unique_name": "<email>",
  "upn": "<email>",
  "uti": "<some id>",
  "ver": "1.0",
  "wids": [
    "<some id>"
  ],
  "xms_idrel": "1 10",
  "xms_st": {
    "sub": "<some id>"
  },
  "xms_tcdt": <some int>,
  "xms_tdbr": "EU"
}.[Signature]

Что я делаю не так?

Я много искал на некоторых форумах, но не получил никакого ответа. Я сталкиваюсь с этой ошибкой уже несколько дней и не могу найти ничего, что помогло бы устранить конкретную ошибку.

Токен доступа с aud 00000003-0000-0000-c000-000000000000 или https://graph.microsoft.com предназначен для Microsoft Graph API, не следует проверять, поскольку токен не предназначен для приложения.

Rukmini 19.06.2024 16:01

Следовательно, не проверяйте токены API Microsoft Graph и не вызывайте API.

Rukmini 19.06.2024 16:01

@Rukmini спасибо за ваш комментарий! Но какой токен мне тогда добавить в запрос? Какие-либо предложения?

SCH361 19.06.2024 16:11

Какой API вы хотите вызвать?

Rukmini 19.06.2024 16:12

API-интерфейс микросервиса (из моей компании), который вызывается при каждом запросе для проверки токена, но (как я уже говорил) терпит неудачу. Извините за путаницу — я совершенно новичок во всей этой штуке с проверкой токенов.

SCH361 19.06.2024 16:19

После создания токена доступа вы хотите вызвать API Microsoft Graph или собственный API?

Rukmini 19.06.2024 16:24

@Rukmini Нет, мне это пока не нужно - может быть, в будущем.

SCH361 19.06.2024 16:26

Итак, ваша цель — просто сгенерировать токен доступа для области Microsoft Graph Api?

Rukmini 19.06.2024 16:32

Вы тоже проверили это stackoverflow.com/questions/76009655/…??

Rukmini 19.06.2024 16:34

Не совсем - мои веб-API защищены через Azure, и я хочу аутентифицировать свои запросы - когда я вхожу в систему как сотрудник компании (а не как обычный пользователь), я делаю это с помощью своего корпоративного входа и получаю ключ доступа от этого idp. . И да, я на этом - похоже, это может мне помочь - я попробую. Большое спасибо!

SCH361 19.06.2024 16:38

Могу ли я опубликовать это как ответ?

Rukmini 19.06.2024 16:45

Я попробую сегодня вечером на своей тестовой среде и сообщу вам завтра. Конечно, вы можете опубликовать это как ответ и получить баллы, если это сработает :) Большое спасибо!

SCH361 19.06.2024 16:50

Дайте мне знать, если это сработает, как только оно будет решено, я опубликую это как ответ.

Rukmini 19.06.2024 16:51

Вам следует запросить токен, используя область, определенную для вашего API на странице Expose API при регистрации вашего приложения. Таким образом, вы получите токен доступа для вашего API, который вы сможете проверить.

juunas 20.06.2024 10:31

@juunas Как мне тогда ввести это в свой B2C? <Item Key = "scope">api://clientId/myEndpoint</Item>?

SCH361 20.06.2024 10:38

@SCH361 Проверьте это прицел должен быть такой

Rukmini 20.06.2024 10:40

В примере показан <Item Key = "scope">openid profile</Item>, поэтому туда нужно добавить что-то вроде: <Item Key = "scope">openid profile api://clientId/myEndpoint</Item>

juunas 20.06.2024 10:41

Область openid и профиля запрашивает токен идентификатора, который необходим AAD B2C для заполнения утверждений. При добавлении области API дополнительно запрашивается токен доступа для API.

juunas 20.06.2024 10:42

Должно быть <Item Key = "scope">https://Tenant.onmicrosoft.com/XXX/Enpoint</Item‌​> для b2c @SCH361

Rukmini 20.06.2024 10:50

Кажется, я получаю токен идентификатора с действительным токеном доступа с вашей областью действия @juunas! Спасибо большое, ребята, очень ценю это! @Rukmini, ты можешь опубликовать свой ответ, и я приму его!

SCH361 20.06.2024 10:54
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
20
123
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Обратите внимание: токен доступа с aud 00000003-0000-0000-c000-000000000000 или https://graph.microsoft.com предназначен для Microsoft Graph API, не следует проверять, поскольку токен не предназначен для приложения.

  • Токены API Microsoft Graph используют немного другие методы подписи, и вы не можете использовать одни и те же методы для проверки токенов API Microsoft Graph.
  • Токены, созданные для пользовательского API или приложения, должны быть проверены только.

Я получил ту же ошибку при декодировании токена API Microsoft Graph:

Следовательно, не проверяйте токены API Microsoft Graph и не вызывайте API.

Проверке подлежат только токены, созданные для приложения путем предоставления API и предоставления разрешений.

И предоставить разрешения API:

Создайте токен доступа, передав область как https://b2c.onmicrosoft.com/xxx/Endpoint openid offline_access, и подтвердите область, как показано ниже:

<Item Key = "scope">https://b2c.onmicrosoft.com/XXX/Enpoint</Item>

Ссылка:

jwt — использование идентификатора клиента Azure AD и действующего токена, выданного для «регистрации приложения». Проверка подписи не удалась - Stack Overflow на русском

Другие вопросы по теме