У меня есть система, в которой мы используем 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);