2014-10-13 2 views
0

은 내가 초기화이SAML LogoutRequest XML 표현에

같은 LogoutRequest을 형성 NameID

NameID nameId = buildSAMLObjectWithDefaultName(NameID.class); 
nameId.setFormat("urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress"); 
nameId.setValue("xxxxxx"); 
String sessionIndex = "idxxxx";  
LogoutRequest logoutRequest = genererateLogoutRequest(nameId, sessionIndex, metaData); 

방법 generateLogoutRequest

private static LogoutRequest genererateLogoutRequest(final NameID nameId, 
     final String sessionIndex, final SAMLMetaData metaData) 
     throws Exception { 
    LogoutRequest logoutRequest = buildSAMLObjectWithDefaultName(LogoutRequest.class); 

    logoutRequest.setID("SOME RANDOM ID"); 

    logoutRequest.setDestination("xxxxxxx/sso/saml"); 
    logoutRequest.setIssueInstant(new DateTime()); 

    Issuer issuer = buildSAMLObjectWithDefaultName(Issuer.class); 
    issuer.setValue("xxxxx"); 
    logoutRequest.setIssuer(issuer); 

    SessionIndex sessionIndexElement = buildSAMLObjectWithDefaultName(SessionIndex.class); 

    sessionIndexElement.setSessionIndex(sessionIndex); 
    logoutRequest.getSessionIndexes().add(sessionIndexElement); 

    logoutRequest.setNameID(nameId); 
    return logoutRequest; 
} 

경우 buildSAMLObjectWithDefaultName

public static <T> T buildSAMLObjectWithDefaultName(final Class<T> clazz) 
     throws IllegalArgumentException, IllegalAccessException, 
     NoSuchFieldException, SecurityException { 
    XMLObjectBuilderFactory builderFactory = Configuration 
      .getBuilderFactory(); 

    QName defaultElementName = (QName) clazz.getDeclaredField(
      "DEFAULT_ELEMENT_NAME").get(null); 
    T object = (T) builderFactory.getBuilder(defaultElementName) 
      .buildObject(defaultElementName); 

    return object; 
} 

xml 표현을 콘솔에 LogoutRequest으로 표시하는 방법은 무엇입니까? 나는이

System.out.println(logoutRequest.getDOM().toString()); 

처럼 수행 할 때 이 NullPointerException가 발생합니다.

답변

1

나는이 기능을 사용

Marshaller marshaller = org.opensaml.Configuration 
      .getMarshallerFactory().getMarshaller(logoutRequest); 
org.w3c.dom.Element authDOM = marshaller.marshall(logoutRequest); 
StringWriter rspWrt = new StringWriter(); 
XMLHelper.writeNode(authDOM, rspWrt); 
System.out.println(rspWrt.toString());