2013-06-06 2 views
1

나와 내 팀은 opensaml을 사용하여 SAML 토큰을 생성합니다. 이 팀을 구성하기 위해 관리 작업을 수행했지만 다른 팀 구성원이 생성 된 토큰을 다소 구성 할 수 있다면 감사하게 생각합니다.Opensaml KeyInfo 구성

우리가 변경하고자하는 영역은 토큰의 EncryptedKey 섹션입니다. 당신이 볼 수 있듯이

<xenc:EncryptedKey xmlns:xenc="http://www.w3.org/2001/04/xmlenc#"> 
    <xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5"/> 
    <dsig:KeyInfo xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"> 
    <dsig:KeyName>BCL12232</dsig:KeyName> 
    </dsig:KeyInfo> 
    <xenc:CipherData> 
     <xenc:CipherValue> 
     H4lcHtpC9WJcwbZ4rWFEipoRN7tbc7EOWRqZPWDtds9WaukKZP8mPECxYS7LGbV5HP+87nTE5AMfTOLecVLMiR42vFL8sza6HiMD1L5+At26UUgowlixjnUs89vE8c11sv7J5eTVb41bi/DSFLRHdaZ+sJ4ojHCxwcsUcxelsjC+kcAC09hGXOT6b7DBxzWgk+XHY86uuvpYpLLu28TibzpJdpo1gm237QJrAcz2RSY9RqCDN9UOtByHbbihCiKIMIUXG6wHBUnAtZbTp7XS3RMgkK1YBys91ImXvmRYTaNRnW2sQmdwli6m1Oxi9vFFvt8wAUClNRbM1m6wX/r1oQ== 
     </xenc:CipherValue> 
    </xenc:CipherData> 
</xenc:EncryptedKey> 

, 차이가 있다는 것입니다 :

 <xenc:EncryptedKey xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" 
     Id="_9b07dd8a259d8ee8162adf17cd761d34"> 
     <xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" 
      xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" /> 
     <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> 
      <ds:X509Data> 
       <ds:X509Certificate>MIIC4DCCAcigAwIBAgIEUUrqgDANBgkqhkiG9w0BAQUFADAyMTAwLgYDVQQDEydCRFNQVUtMNzAz 
        NDIzODUuY2xpZW50LmJhcmNsYXlzY29ycC5jb20wHhcNMTMwMzIxMTEwOTUyWhcNMTQwMzIxMTEw 
        OTUyWjAyMTAwLgYDVQQDEydCRFNQVUtMNzAzNDIzODUuY2xpZW50LmJhcmNsYXlzY29ycC5jb20w 
        ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCmWG7p7iATCM06WMsKg8LlLg8AXUvyZI6l 
        hZkz7Sc/moL6WtSUBrL60joLAi4L+P/VrbtZMNzP9kh3uyW0uZ0Vb+DhsXMQBccgdQMzq//nK2GN 
        0+/F4KYKLsdYpecR28YlOQRl2Y6Gc3i8PZIk2a8bmf64tbOCyOWHzX7fNHo+MSM3JcWOLltFKZCT 
        z8O8OJjhFqxA7fl+zLBEXprJZtxU/AOaLW6qBPh8w1LmIfU8nK5bnjlKpdobV8uXlXkKVOJWxm1P 
        yjQDt1G1FKyBKLmyPbw9xY5DSDmQFpwgeZIQdOkRrrYzwYzYFCuqL9USjPw6414kYqBNr221SWei 
        pLjbAgMBAAEwDQYJKoZIhvcNAQEFBQADggEBAILQ69plSMdO8/3nx5ZJPMWSS2MqFlThAoMW0kmK 
        20DBH5o3b+6BZ4d566IEGRReOOFVxMKNbuq3thrIliUQG0Qzzu0T41UE7noFXwZOwavYxhy1BdwW 
        B906CAb0Qq7qu1FXd8PVKzLn7IazaPXSuRkhGmoE4vcRVphRZkzU6xjkfEZ5AO+7qVE/5tcREXAB 
        coxpqWeTVeZiT0oazx7eWyqVlqSaLboOqByk5O921hY4E7PZaS7HGBXHcywVHU9fXwbEIgNl0noC 
        sduXcYkjC6WEiV8rQiuBXx5bspPkau28V+GQ1kNwuq5ypEskDW3GHUrZiAmaucooahVzvhDiBM0= 
       </ds:X509Certificate> 
      </ds:X509Data> 
     </ds:KeyInfo> 
     <xenc:CipherData xmlns:xenc="http://www.w3.org/2001/04/xmlenc#"> 
      <xenc:CipherValue>LhIn8/SjXbnCsMP6ITxb++0rFYpN8S0L6K/VE74XKjh4Jtlo8IaZQi6c9HRqlII/VT5OKaVySNCO2wOaKS/EUsTt5a/0oR9Yh9mCLt9NQDpkxau1OiydwTYoo6G29fFpYgeDXEPrdR4iUlOERuulmFlNTETWu/doHb4b6hFZdsLEtQH1qSi/jBIq2Q7peXI396G8RWDoWO1urJtIQWR5HjqDckcp3eQ2AC3mXkm949g+OS3Y3g/dPi5erkAhNmFXdinOnX6SQWHEBhFkroFfzqkzEPOVlJdL5Rb9X1mgEk5tJefSUChs6HguRqMeMr0s4UFi/KUwlZbINio1hSNTZg== 
      </xenc:CipherValue> 
     </xenc:CipherData> 
     <xenc:ReferenceList> 
      <xenc:DataReference URI="#_a04f85fb05fda175a5e7eba026640f16" /> 
     </xenc:ReferenceList> 
    </xenc:EncryptedKey> 

내 동료가보고 싶은 방법 그러나이의 라인을 따라 뭔가 : 현재는 다음과 같이 보입니다 X509 인증서는 후자의 예제에서 SAML 토큰에 추가되지 않으며 키에 대한 유일한 정보는 키 이름입니다.

문제를 조사한 결과 문제가 신임 정보에있을 수 있다고 생각합니다.

아무도 그러한 방식으로 opensaml을 구성하는 데 어떤 경험이 있습니까? 이처럼 KeyInfo를 어떻게 구성 할 수 있습니까?

도움을 미리 감사드립니다.

업데이트 : 지금 KeyInfoHelper.addKeyName(KeyInfo, KeyName);을 사용하여 키 이름을 설정하는 방법을 알아 냈지만 X509 인증서 정보를 숨기는 일은 여전히 ​​없습니다.

+0

당신이 암호화 –

+0

@Stefan을 수행하기 위해 사용하는 송시를 게시하시기 바랍니다 수,이 회신 주셔서 감사합니다,하지만 난 사실 지금은 분류되어 있습니다. 이와 같은 경우의 협약은 무엇입니까? 내 질문에 대한 답변을 게시해야합니까? –

+1

예 해결책으로 솔루션을 게시하는 것이 좋습니다. –

답변

0

문제점은 내가 opensaml을 사용하여 나를 위해 핵심 정보를 자동 생성하는 것이 었습니다. 기본적으로 x509 인증서가 첨부됩니다. 내 자신의 KeyInfo 객체를 생성하고 단순히 키 이름을 추가하여이를 극복했습니다.

조금 해킹 된 것처럼 보이지만 작업이 완료되었습니다.

다음은 키 정보를 작성하는 방법입니다.

private KeyInfo getKeyInfo(final Credential c, final String keyName) { 

    final SecurityConfiguration secConfiguration = 
      Configuration.getGlobalSecurityConfiguration(); 
    final NamedKeyInfoGeneratorManager namedKeyInfoGeneratorManager = 
      secConfiguration.getKeyInfoGeneratorManager(); 
    final KeyInfoGeneratorManager keyInfoGeneratorManager = 
      namedKeyInfoGeneratorManager.getDefaultManager(); 
    final KeyInfoGeneratorFactory keyInfoGeneratorFactory = 
      keyInfoGeneratorManager.getFactory(c); 
    final KeyInfoGenerator keyInfoGenerator = keyInfoGeneratorFactory.newInstance(); 
    KeyInfo keyInfo; 

    keyInfo = keyInfoGenerator.generate(c); 
    KeyInfoHelper.addKeyName(keyInfo, 
      keyName); 
    return keyInfo; 
} 
관련 문제