Какова цель требования nameidentifier? - PullRequest
66 голосов
/ 28 апреля 2011

Для чего нужно использовать утверждение типа http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier?

Это главный вопрос, а вот и другие.

Чем она отличается от http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name претензии?

Является ли он постоянным для конкретного пользователя, а не для имени?

Это глобально или IdP?

Ответы [ 4 ]

34 голосов
/ 22 июня 2012

Name, это просто имя. Если мы говорим о человеке, подумайте «Эрик»; сервер "file01".

A NameIdentifier - это идентификатор объекта. Возвращаясь к нашему объекту person, UserID Эрика может быть 435 в вашей базе данных. Для сервера Идентификатор может быть чем-то вроде FQDN или SID.

Согласно этой записи , по-видимому, идентификатор имени был свойством SAML 1.1 и заменяется NameID в SAML 2.0.

Уникальный или нет?

Я хотел обратиться к комментарию @ Джейсона и посту @ nzpcmad. Я не вижу уникальности как четкого требования. Вопрос помечен , но указанная схема принадлежит OASIS. Так что это те интерпретации двух сторон, которые мы должны сбалансировать.

Позиция Microsoft в отношении ADFS явно заключается в том, что существует уникальное требование. Мы видим это в статье " Роль претензий ". Без сомнения, ADFS отбрасывает большую тень, но это похоже на детали реализации.

Глядя на спецификацию SAML 1.1 , я не вижу такого утверждения. Самое близкое, что мы получаем в разделе 2.4.2.2 спецификации:

Элемент указывает на предмет сочетанием квалификатор имени, имя и формат. Элемент имеет следующие атрибуты:
...
NameQualifier [необязательно] Защитный или административный домен, который уточняет название предмета. Этот атрибут обеспечивает средство объединять имена из разных пользовательских хранилищ без коллизий.

Текст спецификации говорит мне, что я должен быть в состоянии найти человека, использующего комбинацию из трех атрибутов, но он не делает никаких утверждений относительно уникальности. Не могу ли я иметь две записи, которые указывают на одного и того же пользователя? Кажется, так. Более того, не указывает ли спецификация, что атрибут NameQualifier необходим в случаях, когда NameIdentifier недостаточно для однозначной идентификации имени?

Так к чему все это приведет?

  • Будьте осторожны, скорее всего, безопаснее.
  • Раскройте позицию вашего провайдера по теме.
10 голосов
/ 02 мая 2011

За Роль претензий ,

Имя Уникальное имя пользователя

Идентификатор имени SAML имя идентификатора пользователя

Эти два утверждения являются частью группы утверждений, которые AD FS 2.0 настраивает по умолчанию.

Это означает, что они относятся к области IP.

например. когда вы входите в Google с помощью ACS, «nameidentifier» - это уникальный GUID, связанный с вашей учетной записью Google, а name - это ваша учетная запись Google, например "Tim.smith@gmail.com".

4 голосов
/ 25 декабря 2015

ClaimTypes.Name для UserName, а ClaimTypes.NameIdentifier указывает личность пользователя. Если вы добавите их в ClaimIdentity объект, который предоставляет вам доступ к User.Identity методам, которые GetUserName() и GetUserId().

0 голосов
/ 17 марта 2014

Заявка nameidentifier должна использоваться для получения уникального имени пользователя.

Для аутентификации Windows:

http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier домен \ чернокнижник

http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name 0 # .w | домен \ warlock

домен \ варлок - это имя пользователя Windows

для аутентификации на основе утверждений:

http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier warlock@localhost.com

http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name 05.t|myidentityprovider|warlock@localhost.com

адрес электронной почты был указан какЗаявка на получение идентификатора

Как видите, .../identity/claims/name описывает также имя и имя провайдера.

...