2016-11-22 33 views
0

私はインターネット上で行った知識と研究によって、現在OPENAMはSHA-256暗号化をサポートしていないようです。私は自分のプロジェクトでSAML認証を使用していますが、現在はSHA 256暗号化をサポートしていない古いopenfed jarを使用しています。私は最新の瓶に行っても、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をサポートしていないようです。 私はこの中に2つの異なることがあると思います..第1はSAMLレスポンスの暗号化/復号化、第2はデジタル署名されたSAMLレスポンスです。 あなたがこれに気付いているなら、あなたはまた説明することができます(私はこの分野では知識が限られています)。 – user1753210

答えて

0

まず、SHA-256は暗号化アルゴリズムではありません。

デジタル署名では、ダイジェストアルゴリズムとしてSHA256を使用できます。 QuerySignatureUtilのソースでわかるように、実際のアルゴリズムは今や設定可能であり、different valuesをたくさん取ることができます。設定の検索はSystemPropertiesManagerで行われるスニペットに呼び出し、設定の2つの場所から来ることができます。Fedletのため

  • :プロパティはFederationConfig.propertiesで定義する必要があります。
  • OpenAMサーバーの場合、設定は[グローバル設定]の[共通フェデレーション構成]にあります。

    • FMSigProvider:あなたは、デジタル署名の実装を見てみたい場合は

    、次いで、目的の2つのクラスが存在し、適切なXML署名を使用して、このクラスのお得な情報が、すべてのデジタル署名は一部になりますXMLドキュメントのxmldsig spec。

  • QuerySignatureUtil:このクラスは、通常、クエリー・ストリングの署名を扱います。これは、通常のXML署名とは異なるルール・セットを持っています。この場合、署名は署名されたXML文書の一部ではなく、代わりに署名文字列に置かれます。 HTTP-Redirectバインディングについて説明しているSAML binding specではこれについて詳しく説明しています。

デジタル署名内のDigestMethod値を制御する場合は、13.5.0で実装されたOPENAM-7778を参照する必要があります。

256ビット暗号化アルゴリズムを使用してSAMLメッセージを暗号化する場合は、JCE jurisdiction filesをインストールする必要があります。その後、http://www.w3.org/2001/04/xmlenc#aes256-cbcをXML暗号化アルゴリズムとして設定する必要があります。

+0

あなたの助けにピーターに感謝します。私はこれについて詳細に検討していましたが、SAMLのデジタル署名と暗号化に関連した公正なアイデアを得ました。 しかし、私はアルゴリズムがQuerySignatureUtil.javaで構成可能であるのを見ることができません。あなたが設定可能なコードの部分を私に指摘してください。 – user1753210

+0

また、署名の検証がどこで行われたのか理解してもらえますか? FMSigProvider.classとQuerySignatureUtil.classの使用方法 署名方法とダイジェスト方法の違いもあります。 SignatureMethodアルゴリズムは、署名されるコンテンツが最初にハッシュされる(消化された)ことを意味します。 ご協力いただきありがとうございます。 – user1753210

+0

少し詳細を含むように返信を更新しました。私は、DigestMethodとSignatureMethodによって決定されたダイジェストの違いは何か分かりません。あなたがそれを理解するなら、私に知らせてください。 :) –

関連する問題