Получение реального исходного издателя идентификационного утверждения в 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