Ответ SAML Подписанное утверждение отсутствует Элемент KeyInfo - PullRequest
0 голосов
/ 17 сентября 2018

Мы выступаем в качестве поставщика услуг в SSO, инициированном IDP, используя SAML 2.0. Мы используем Saml2SecurityTokenHandler для извлечения токена из ответа SAML. Подписанное утверждение. Но следующее исключение возникает, когда элемент ds: KeyInfo отсутствует в элементе ds: Signature . SecurityTokenHandler ожидает, что KeyInfo будет присутствовать в утверждении со знаком. Но согласно спецификации SAML 2.0 KeyInfo не является обязательным элементом и может отсутствовать.

Получено исключение:

System. System.IdentityModel.Tokens.Saml2SecurityKeyIdentifierClause) '. Убедитесь, что в SecurityTokenResolver указан требуемый ключ.

Фрагмент кода:

foreach (XmlElement assertionNode in _assertionElements)
{
    using (var reader = new XmlNodeReader(assertionNode))
    {
        Saml2SecurityTokenHandler tokenHandler = new Saml2SecurityTokenHandler();
        var securityToken = tokenHandler.ReadToken(reader); // Exception triggered.
        tokenHandler.DetectReplayedToken(securityToken);
        tokenHandler.ValidateConditions(securityToken.Assertion.Conditions, false);

        claimList.Add(tokenHandler.CreateClaims(securityToken));
    }
}
  1. В нескольких ответах (подписанное подтверждение SAML) от того же стороннего IDP отсутствует значение KeyInfo, в то время как другие ответы имеют это значение. ВПЛ непоследователен в своих ответных действиях. В чем может быть причина?
  2. Обязателен ли элемент KeyInfo для подписанного подтверждения ответа SAML?
  3. Как избежать этого исключения, даже если IDP пропускает элемент в своем ответе?
...