2013-04-19 4 views
0

Java에서 Saml 2.0 요청을 인코딩하려고하지만 온라인으로 도구를 사용하여 디코딩하면 이상한 문자가 표시됩니다. 여기 Saml 2.0 요청 인코딩

<samlp:AuthnRequest 
xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" 
ID="_8d7bd828-6f91-477a-b158-22d693f56972" 
Version="2.0" 
IssueInstant="2013-04-19T14:07:53Z" 
AssertionConsumerServiceURL="http://test"> 
<saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"> 
test 
</saml:Issuer> 
<samlp:NameIDPolicy 
Format="urn:oasis:names:tc:SAML:2.0:nameid-format:unspecified" 
AllowCreate="true" /> 
</samlp:AuthnRequest> 

내가 사용하고 코드입니다 :

입력 문자열입니다

byte[] xmlBytes = baos.toByteArray(); 

//Deflate 
ByteArrayOutputStream byteOutputStream = new ByteArrayOutputStream(); 
DeflaterOutputStream deflaterOutputStream = new DeflaterOutputStream(
               byteOutputStream); 
try { 
    deflaterOutputStream.write(xmlBytes, 0, xmlBytes.length); 
    deflaterOutputStream.close(); 
} catch (IOException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 

//BASE64 encode 
Base64 base64Encoder = new Base64(); 
byte[] base64EncodedByteArray = base64Encoder.encode(xmlBytes); 
String base64EncodedMessage = new String(base64EncodedByteArray); 

// URL encode 
String urlEncodedMessage = null; 
try { 
    urlEncodedMessage = URLEncoder.encode(base64EncodedMessage,"utf-8"); 
} catch (UnsupportedEncodingException e) { 
    e.printStackTrace(); 
} 
return urlEncodedMessage; 

나는 다음과 같은 결과를 얻을 수 온라인 디코딩 도구를 통해 결과 문자열을 실행하면 :

x?}[email protected][email protected]??`?0??^"??B???Gm?}W?`/^?03????,,­???? 
?=Z}??pT??[iA?-8??q 
?I 
??N 
?h???GYN?\pZ?"?Y:??Pt9mS??<-D?$zCc?V     
Ah?A??+Zq??8??|?d??$ZZ???J+?4 
?/)?u????Kf?d>9??2.cf?-X?<?&??zq?K??A?O???ImZ??`76W???n?~???6 
w?m????? 
^???$????ie?;??3-I??k??7????Srtion"> 
test 
</saml:Issuer> 
<samlp:NameIDPolicy 
Format="urn:oasis:names:tc:SAML:2.0:nameid-format:unspecified" 
AllowCreate="true" /> 
</samlp:AuthnRequest> 

답변

1

URL 디코더를 먼저 사용해야하고 Base64 디코더를 사용해야합니다. 응?

+0

URL 디코더와 Base64 디코더에 샘플 코드를 제공해 주시겠습니까? 일찍 답장 해주세요 .. –