#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. Извините, если я неправильно истолковал то, что мне нужно, это должно быть то, что я ищу. Я попробую и вернусь к тебе.