Получение реального исходного издателя идентификационного утверждения в SharePoint 2010

 

Исходная статья опубликована в четверг 31 марта 2011 г.

Я выполнял эту задачу разными способами на протяжении последних лет, но наконец-то решил сделать все "правильно". Эта задача довольно проста — при вызове настраиваемого поставщика утверждений, например для дополнения утверждений, требуется узнать тип пользователя: утверждения Windows, утверждения FBA или SAML. Как это сделать? Я не буду описывать все способы, которые я использовал для решения этой задачи, а представлю короткий пример кода, в котором показывается, как это делается правильно.

 

//получение диспетчера поставщиков утверждений

SPClaimProviderManager cpm = SPClaimProviderManager.Local;

//получение текущего пользователя для извлечения "реального" исходного издателя

SPClaim curUser = SPClaimProviderManager.DecodeUserIdentifierClaim(entity);

//получение исходного издателя для пользователя

SPOriginalIssuerType loginType = SPOriginalIssuers.GetIssuerType(curUser.OriginalIssuer);

                                 

if (loginType == SPOriginalIssuerType.Windows)

{

//обработка окон

}

else if ((loginType == SPOriginalIssuerType.TrustedProvider) ||

(loginType == SPOriginalIssuerType.ClaimProvider))

{

//обработка SAML

}

 

Я думаю, код довольно понятен, поэтому много комментариев не требуется. В этом случае параметр "entity", используемый в методе DecodeUserIdentifierClaim, передан как часть моего переопределения FillClaimsForEntity (т. е. дополняющие утверждения) в настраиваемом поставщике утверждений. Метод, показанный здесь, должен работать довольно хорошо в любом настраиваемом поставщике утверждений.

Это локализованная запись блога. Исходная статья доступна по адресу How to Get the Real Original Issuer for an Identity Claim in SharePoint 2010