Поддерживает ли OPENAM шифрование SHA-256?

Согласно моим знаниям и исследованиям, которые я провел в Интернете, кажется, что в настоящее время OPENAM не поддерживает шифрование SHA-256. Я использую аутентификацию SAML в своем проекте и в настоящее время использую старую банку openfed, которая не поддерживает шифрование SHA 256. Я также просмотрел последнюю банку и обнаружил, что openam ее не поддерживает. К вашему сведению. Ниже приведен фрагмент QuerySignatureUtil.java:

final String querySigAlg;
    final String alg = privateKey.getAlgorithm();
    switch (alg) {
        case "RSA":
            //Defaulting to RSA-SHA1 for the sake of interoperability
            querySigAlg = SystemPropertiesManager.get(SAML2Constants.QUERY_SIGNATURE_ALGORITHM_RSA,
                    XMLSignature.ALGO_ID_SIGNATURE_RSA_SHA1);
            break;
        case "DSA":
            //Defaulting to SHA1WithDSA as JDK7 does not support SHA256WithDSA
            querySigAlg = SystemPropertiesManager.get(SAML2Constants.QUERY_SIGNATURE_ALGORITHM_DSA,
                    XMLSignature.ALGO_ID_SIGNATURE_DSA);
            break;
        case "EC":
            querySigAlg = SystemPropertiesManager.get(SAML2Constants.QUERY_SIGNATURE_ALGORITHM_EC,
                    XMLSignature.ALGO_ID_SIGNATURE_ECDSA_SHA512);
            break;
        default:
            SAML2Utils.debug.error(classMethod + "Private Key algorithm not supported: " + alg);
            throw new SAML2Exception(SAML2Utils.bundle.getString("algorithmNotSupported"));
    }

В Интернете я нашел билет https://bugster.forgerock.org/jira/browse/OPENAM-8627

Но, похоже, это было сделано только для федлета .NET.

Может ли кто-нибудь


person user1753210    schedule 22.11.2016    source источник
comment
В теме упоминается шифрование, а в коде речь идет о подписи... совсем другое дело. Что вам действительно нужно знать?   -  person Bernhard Thalmayr    schedule 23.11.2016
comment
прежде всего, спасибо за ответ ... на самом деле мы хотим, чтобы ответ saml был зашифрован / расшифрован с помощью 256 бит, а также с цифровой подписью SHA-256. Но кажется, что последняя банка openam также не поддерживает SHA-256. Я думаю, что в этом есть две разные вещи. 1-й - это шифрование/дешифрование ответа SAML, а 2-й - ответ saml с цифровой подписью. Если вы знаете об этом, то можете также объяснить (у меня ограниченные знания в этой области.)   -  person user1753210    schedule 23.11.2016


Ответы (1)


Ну, во-первых, SHA-256 не является алгоритмом шифрования.

Цифровые подписи могут использовать SHA256 в качестве алгоритма дайджеста, да. Как вы можете видеть в исходном коде QuerySignatureUtil, фактический алгоритм теперь настраивается и может занять много разные значения. Извлечение конфигурации выполняется с помощью вызовов SystemPropertiesManager в вашем фрагменте, и конфигурация может поступать из двух мест:

  • Для федлета: свойства должны быть определены в FederationConfig.properties.
  • Для сервера OpenAM настройки можно найти в разделе «Конфигурация общей федерации» в глобальных настройках.

Если вы хотите взглянуть на реализацию цифровой подписи, то вас интересуют два класса:

  • FMSigProvider: этот класс работает с правильными XML-подписями, все цифровые подписи будут частью XML-документа в соответствии с xmldsig спец.
  • QuerySignatureUtil: этот класс в основном имеет дело с подписью строки запроса, которая имеет другой набор правил, чем обычные XML-подписи. В этом случае подпись не будет частью подписанного XML-документа, вместо этого подпись будет помещена в строку запроса. Спецификация привязки SAML, описывающая привязку HTTP-Redirect, обсуждает это более подробно.

Если вы хотите управлять значением DigestMethod в цифровой подписи, вам нужно взглянуть на OPENAM-7778, реализованный в версии 13.5.0.

Если вы хотите шифровать сообщения SAML с помощью 256-битных алгоритмов шифрования, вам необходимо установить файлы юрисдикции JCE, после чего вы сможете настроить http://www.w3.org/2001/04/xmlenc#aes256-cbc в качестве алгоритма шифрования XML.

person Peter Major    schedule 29.11.2016
comment
Спасибо Петру за помощь. Я подробно изучил это, теперь у меня есть четкое представление о цифровой подписи и шифровании для SAML. Но я не вижу, чтобы алгоритм настраивался в QuerySignatureUtil.java. Не могли бы вы указать мне часть кода, из которой это можно настроить. - person user1753210; 30.11.2016
comment
Также не могли бы вы также помочь мне понять, где выполняется проверка подписи. Какая польза от FMSigProvider.class и QuerySignatureUtil.class Также разница между методом подписи и методом дайджеста. Я понимаю, что алгоритм SignatureMethod означает, что подписываемое содержимое сначала хешируется (переваривается). Заранее спасибо за вашу помощь. - person user1753210; 30.11.2016
comment
Я обновил свой ответ, чтобы включить немного больше деталей. Боюсь, я не знаю, в чем разница между DigestMethod и дайджестом, определенным SignatureMethod. Если вы разберетесь, пожалуйста, дайте мне знать. :) - person Peter Major; 01.12.2016