Я использую Kentor HttpModule в приложении на основе WebForms. Мне нужно получить дополнительную информацию, указанную с помощью loggin. Я не уверен, но я думаю, что Kentor анализирует только атрибутID = «userId», и мне нужно получить еще несколько атрибутов.Как использовать Kentor AuthService для получения дополнительных атрибутов утверждения
Нужно ли использовать вилку и изменять Kentor, чтобы иметь эти значения в моем приложении или они где-то хранятся.
Я вижу коллекцию xmlElements, возвращаемую методом AllAssertionElementNodes в Saml2Response, но я не знаю, как получить к ним доступ в приложении.
Для доступа ID я использую этот метод расширения:
public static string GetNameID(this IIdentity identity)
{
var claimsIndentity = identity as ClaimsIdentity;
if (string.IsNullOrWhiteSpace(claimsIndentity)
{
return string.Empty;
}
var providerQuery = from c in claimsIndentity.Claims
where c.Type.EndsWith("/identity/claims/nameidentifier")
select c.Value;
var provider = providerQuery.FirstOrDefault();
return provider;
}
И это:
if (User.Identity.IsAuthenticated)
{
userId = User.Identity.GetNameID();
}
Любое предложение?
UPDATE
Я считаю, что это правильное решение. Внутри ProcessResponse метода в AcsCommand мы имеем samlResponse InnerXml, оттуда мы можем разобрать хотел данные, создавать дополнительные требования, или любой другой, так что теперь у меня есть решение (обходной путь может быть для моего проблема). Есть ли еще более элегантное решение?
Да, они есть. Большое спасибо! Это более элегантное решение, чем мое. Я написал собственный парсер, чтобы вытащить их из XML ответа. Также я не видел, чтобы вы в IdP-решении использовали одну и ту же логику, чтобы перевести все дополнительные претензии в атрибуты. Есть ли недостаток в преобразовании всех претензий в качестве атрибутов и наоборот? Я имею в виду, что мой случай будет работать нормально, но вообще говоря? – ShP
Нет, атрибуты и претензии - это всего лишь два имени для одной и той же вещи. В редких случаях, когда требования должны быть отфильтрованы, это может быть сделано с помощью 'ClaimsAuthenticationManager'. –
Могу ли я также получить доступ к saml2: Subject saml2: значение NameID, не создавая собственный парсер? – ShP