Как определить, является ли вход в систему из учетной записи Microsoft (личной) из претензий JWT? - PullRequest
0 голосов
/ 10 марта 2020

В претензиях на токен JWT значение PUID извлекается из altsecid претензии

{
  "aud": "https://graph.windows.net",
  "iss": "https://sts.windows.net/b7-******--5/",
  "iat": 1579684439,
  "nbf": 1579684439,
  "exp": 1579688339,
  "altsecid": "5::10*********E", --> PUID value
  "acr": "1",
  "amr": [
    "pwd",
    "rsa"
  ],
  "idp": "https://sts.windows.net/b*-**-**-**9/",
  "tid": "b7******---**--****5",
  "unique_name": "abc@xyz",
  "ver": "1.0"
}

. Следует отметить следующее: В случае входа в систему Microsoft токен выполняет не имеет претензии по идентификатору объекта (oid). У нас есть собственный лог c в нашем коде для обработки входа MSA от имени входа AAD.

Какой правильный идентификатор указывает sh, что данный токен получен от входа AAD против входа в систему Microsoft?

В настоящее время у нас есть следующая логика c:

if tid == "F8CDEF31-A31E-4B4A-93E4-5F571E91255A" (live.com tenant id)
 OR idp == "live.com"

Но я хочу быть уверен, что смогу использовать зависимость от утверждения altsecid в качестве источника правды для идентификации Microsoft (личный аккаунт) Войти?

1 Ответ

1 голос
/ 10 марта 2020

Согласно документации , вы можете использовать либо утверждение эмитента:

Идентифицирует службу токена безопасности (STS), которая создает и возвращает токен, и Azure Клиент AD, в котором пользователь прошел аутентификацию. Если токен был выдан конечной точкой v2.0, URI будет заканчиваться на /v2.0. Идентификатор GUID, указывающий, что пользователь является пользователем-потребителем из учетной записи Microsoft, - 9188040d-6c67-4c5b-b112-36a304b66dad.

или утверждение Tid:

GUID, представляющий клиента Azure AD, из которого пользователь. Для рабочих и школьных учетных записей GUID - это неизменный идентификатор арендатора организации, которой принадлежит пользователь. Для личных учетных записей это значение составляет 9188040d-6c67-4c5b-b112-36a304b66dad. Область действия профиля требуется для получения этой заявки.

Таким образом, учетные записи Microsoft всегда имеют один и тот же идентификатор клиента. Это не похоже на то, что у вас есть.

Я не уверен, почему вы ищете эту информацию в токене доступа, предназначенном для Azure AD Graph API. Вы действительно не должны декодировать токены доступа, не предназначенные для вас. Вам следует взглянуть либо на идентификационный токен, данный вашему приложению, либо на токен доступа, предназначенный для вашего API.

...