Назад | Перейти на главную страницу

Настройка ADFS для передачи SID в качестве утверждения

У меня есть система, в которой мы используем ADFS в качестве поставщика удостоверений для обеспечения единого входа с применением .NET на основе WIF. Все работает хорошо, и мы можем передать все претензии по мере необходимости, например, вот правило передачи фамилии:

c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", 
Issuer == "AD AUTHORITY"]  
=> issue(store = "Active Directory", 
types = ("http://example.com/identity/claims/portal/lastname"), 
query = ";sn;{0}", param = c.Value);

Однако теперь мне нужно добавить два правила, с которыми у меня возникли проблемы: первое - передать SID, а второе - передать имя учетной записи SAM (домен \ пользователь). Их нет в предопределенном списке в мастере настройки утверждений ADFS, и я пытался написать для них собственные правила, но не могу заставить их работать.

Не могли бы вы указать мне ссылку, как я могу извлечь эти свойства, если это действительно возможно?

Прошу прощения. Если я испортил какую-то номенклатуру, я обычно работаю над кодом, вторгаясь в AD, только если у меня нет другого выбора :) Все исправления приветствуются.

Передайте objectguid вместо SID, чтобы получить действительно неизменяемый идентификатор для объекта AD.

Что-то похожее:

c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"]
  => issue(store = "Active Directory", types = ("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier"), query = ";objectGUID;{0}", param = c.Value);

Хорошо, мне удалось разобраться, найдя этот страница. Я в основном использовал неправильные имена атрибутов, в моем случае я должен был использовать objectSid и sAMAccountName. К моему удивлению, в последнем тоже нет доменной части. Так что на случай, если это поможет кому-то еще, вот пример правила, передающего SID в качестве утверждения:

c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", 
Issuer == "AD AUTHORITY"]  
=> issue(store = "Active Directory", 
types = ("http://example.com/identity/claims/portal/lastname"), 
query = ";objectSid;{0}", param = c.Value);