2016-11-22 14 views
0

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

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 fedlet.

Может кто-то

+0

Тема упоминает шифрование, но код о сигнатуре ... довольно разный. Что вам действительно нужно знать? –

+0

прежде всего спасибо за ответ ... на самом деле мы хотим, чтобы ответ saml был зашифрован/расшифрован на 256 бит, а также с цифровой подписью с SHA-256. Но, похоже, последний openam jar также не поддерживает SHA-256. Я думаю, что в этом есть две разные вещи. Первая - это шифрование/дешифрование ответа SAML, а вторая - цифровая подпись saml. Если вы знаете об этом, то можете ли вы также объяснить (у меня ограниченные знания в этой области.) – user1753210

ответ

0

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

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

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

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

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

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

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

+0

Спасибо, Питер за вашу помощь.Я подробно изучил это, теперь у меня есть справедливая идея, связанная с цифровой подписью и шифрованием для SAML. Но я не могу видеть, что алгоритм настраивается в QuerySignatureUtil.java. Не могли бы вы указать мне часть кода, с которой он может быть настроен. – user1753210

+0

Также вы можете помочь мне понять, что там, где выполняется проверка подписи. Что такое использование FMSigProvider.class и QuerySignatureUtil.class Также разница между методом подписи и методом дайджеста. Я понимаю, что SignatureMethod Algorithm означает, что содержимое, которое должно быть подписано, сначала хешировано (переварено) Заранее благодарим за помощь. – user1753210

+0

Я обновил свой ответ, чтобы включить более подробную информацию. Боюсь, я не знаю, в чем разница между DigestMethod и дайджестом, определяемым SignatureMethod. Если вы это выясните, сообщите мне. :) –

 Смежные вопросы

  • Нет связанных вопросов^_^