Получение идентификатора объекта из Azure AD

#asp.net-core #claims #objectid

#asp.net-ядро #претензии #идентификатор объекта

Вопрос:

Мне нужна помощь в возврате идентификатора объекта пользователя из Azure AD в моем ASP.NET основное приложение. Следующее возвращает значение null:

         var identity = User.Identity as System.Security.Claims.ClaimsIdentity;
        var objectId = identity?.FindFirst("http://schemas.microsoft.com/identity/claims/objectidentifier")?.Value;
 

Я также пробовал ниже, поскольку я видел, как упоминали другие, он сопоставляется с ObjectId:

identity?.FindFirst(System.Security.Claims.ClaimTypes.NameIdentifier)?.Value;

Он возвращает значение, но это не идентификатор объекта, как показано в Azure AD.

Любая помощь была бы очень признательна.

Комментарии:

1. Вы спрашиваете о токене JWT? Если это так, вы хотите sub получить утверждение из токена, var subClaim = User.FindFirst(ClaimTypes.NameIdentifier); затем получить доступ к строковому значению через subClaim.Value . Не просматривайте User.Identity идентификатор объекта или объекта.

2. Привет @jandrew, я надеялся, что ты сможешь получить идентификатор объекта из системы. Безопасность. Пространство имен утверждений?

3. Я не уверен, о чем вы спрашиваете. Если вам нужен идентификатор объекта пользователя (Azure AD), вы можете получить утверждение напрямую, из User.FindFirst(ClaimTypes.NameIdentifier); которого вы получите Claim связанный с ним объект. Вы можете получить значение, через Claim.Value которое будет строковое представление объекта-id.

4. Извините, если я неправильно истолковал то, что мне нужно, это должно быть то, что я ищу. Я попробую и вернусь к тебе.