2017-02-23 6 views
0

아래 링크를 거치면 정확히 동일한 논리를 java에 구현해야합니다. https://www.samltool.com/sign_response.phpOpen SAML을 사용하여 SAML 응답에 서명하는 방법

나는 서명되지 않은 XML을 가지고 있습니다. 서비스 제공 업체에 보내기 전에 메시지에 서명해야합니다. 나는 개인 및 공개 키와 서명되지 않은 xml을 둘 다 가지고있다.

저는 SAML을 처음 사용합니다. 공개 키와 개인 키를 사용하여 메시지에 서명하기 위해 호출 할 코드 스 니펫을 정확하게 제공 할 수 있습니까?

이와 관련하여 입력이 필요합니다.

감사합니다, 인 Ashish

+0

당신이 OpenSAML의 어떤 버전을 사용합니까 단지 프로젝트의 pom.xml 파일에

<dependency> <groupId>com.onelogin</groupId> <artifactId>java-saml</artifactId> <version>2.0.0</version> </dependency> 

종속성을 추가,이 라이브러리를 사용 하는가? – gusto2

답변

0

당신은 서명 objecy을 만들고 응답

.setSignature(signature) 

다음으로 마샬에 서명 오브젝트를 설정 그 다음

signature.setSigningCredential(credential); 
signature.setSignatureAlgorithm(SignatureConstants.ALGO_ID_SIGNATURE_RSA_SHA1); 
signature.setCanonicalizationAlgorithm(SignatureConstants.ALGO_ID_C14N_EXCL_OMIT_COMMENTS); 

에 서명 속성을 설정 응답 객체

XMLObjectProviderRegistrySupport 
    .getMarshallerFactory() 
    .getMarshaller(response) 
    .marshall(response); 

이 마지막으로 당신은 또한 Onelogin Saml Java에서 SAML - 자바 유틸 onelogin 사용할 수 있습니다 this post on my blog

1

에 서명

Signer.signObject(signature); 

내가 가지고 더 많은 정보를 수행하기 위해 서명자 클래스를 사용 - 하나는 훨씬 쉽게 것 같다 사용할 수 있습니다 (공개 키, 개인 키, 문자열 등의 문서를로드하는 메서드가 있습니다. 그런 다음 전체 SAML 응답에 서명하거나 응답에 서명 한 다음 응답을 서명하는 데 사용할 수 있습니다.

Document document = Util.loadXML(saml); //loads string to document 

//load private key and certificate 
X509Certificate cert = Util.loadCert(pubKeyBytes); 
PrivateKey privateKey = Util.loadPrivateKey(privKeyBytes); 

//sign the response 
String signedResponse = Util.addSign(document, privateKey, cert, null); 
,451,515,