Java 如何显示Saml断言节点?
嗨,伙计们,我希望你们都好 我已经用opensaml-j创建了一个saml断言,我想显示它的内容 但当我这样做时,它会在main方法中抛出NullPointerException 有人能告诉我原因吗?? 这是我的密码Java 如何显示Saml断言节点?,java,opensaml,Java,Opensaml,嗨,伙计们,我希望你们都好 我已经用opensaml-j创建了一个saml断言,我想显示它的内容 但当我这样做时,它会在main方法中抛出NullPointerException 有人能告诉我原因吗?? 这是我的密码 import java.security.SecureRandom; import org.joda.time.DateTime; import org.opensaml.core.xml.schema.XSString; import org.opensaml.core.xml
import java.security.SecureRandom;
import org.joda.time.DateTime;
import org.opensaml.core.xml.schema.XSString;
import org.opensaml.core.xml.schema.impl.XSStringBuilder;
import org.opensaml.saml.common.SAMLVersion;
import org.opensaml.saml.saml1.core.NameIdentifier;
import org.opensaml.saml.saml1.core.Subject;
import org.opensaml.saml.saml2.core.impl.EvidenceBuilder;
import org.opensaml.saml.saml1.core.impl.NameIdentifierBuilder;
import org.opensaml.saml.saml1.core.impl.SubjectBuilder;
import org.opensaml.saml.saml2.core.Action;
import org.opensaml.saml.saml2.core.Assertion;
import org.opensaml.saml.saml2.core.Attribute;
import org.opensaml.saml.saml2.core.AttributeStatement;
import org.opensaml.saml.saml2.core.AttributeValue;
import org.opensaml.saml.saml2.core.AuthzDecisionStatement;
import org.opensaml.saml.saml2.core.Conditions;
import org.opensaml.saml.saml2.core.DecisionTypeEnumeration;
import org.opensaml.saml.saml2.core.Evidence;
import org.opensaml.saml.saml2.core.Issuer;
import org.opensaml.saml.saml2.core.impl.ActionBuilder;
import org.opensaml.saml.saml2.core.impl.AssertionBuilder;
import org.opensaml.saml.saml2.core.impl.AttributeBuilder;
import org.opensaml.saml.saml2.core.impl.AttributeStatementBuilder;
import org.opensaml.saml.saml2.core.impl.AuthzDecisionStatementBuilder;
import org.opensaml.saml.saml2.core.impl.ConditionsBuilder;
import org.opensaml.saml.saml2.core.impl.IssuerBuilder;
public class CreateSamlAssertion {
@SuppressWarnings("deprecation")
public static Assertion createAssertion(){
Assertion assertion=(Assertion)new AssertionBuilder().buildObject();
assertion.setID(idGenerator());
assertion.setVersion(SAMLVersion.VERSION_20);
assertion.setIssueInstant(new DateTime());
Issuer issuer=(Issuer)new IssuerBuilder().buildObject();
issuer.setNameQualifier("tfou");//StaticData.logName
assertion.setIssuer(issuer);
Subject subject=(Subject)new SubjectBuilder().buildObject();
NameIdentifier nameId=(NameIdentifier)new NameIdentifierBuilder().buildObject();
nameId.setFormat(NameIdentifier.EMAIL);
nameId.setNameIdentifier("tfou2");//StaticData.destName
subject.setNameIdentifier(nameId);
Conditions conditions=(Conditions)new ConditionsBuilder().buildObject();
conditions.setNotBefore(new DateTime());
conditions.setNotOnOrAfter(new DateTime().plusMinutes(20));
assertion.setConditions(conditions);
AuthzDecisionStatement authDecisionStatement=getAuthzDecisionStatement();
assertion.getAuthzDecisionStatements().add(authDecisionStatement);
return assertion;
}
private static AuthzDecisionStatement getAuthzDecisionStatement(){
AuthzDecisionStatement aDStatement=(AuthzDecisionStatement)new AuthzDecisionStatementBuilder().buildObject();
DecisionTypeEnumeration decision = DecisionTypeEnumeration.PERMIT;
aDStatement.setDecision(decision);
aDStatement.setResource("http://www.hb.com/Resources/Resource A1");
Action actions=getAction();
actions.setNamespace("http://www.hb.com/Resources/");
aDStatement.getActions().add(actions);
Evidence evidence=getEvidence();
aDStatement.setEvidence(evidence);
return aDStatement;
}
private static Evidence getEvidence(){
Evidence evidence=(Evidence) new EvidenceBuilder().buildObject();
Assertion assertion=(Assertion)new AssertionBuilder().buildObject();
AttributeStatement aStatement=(AttributeStatement) new AttributeStatementBuilder().buildObject();
Attribute attribute1=(Attribute)new AttributeBuilder().buildObject();
attribute1.setName("IssuerCapabilityID");
XSString attrValue1 = (XSString)new XSStringBuilder().
buildObject(AttributeValue.DEFAULT_ELEMENT_NAME, XSString.TYPE_NAME);
attrValue1.setValue("Cap01");
attribute1.getAttributeValues().add(attrValue1);
Attribute attribute2=(Attribute)new AttributeBuilder().buildObject();
attribute2.setName("IssuerCapabilityID");
XSString attrValue2 = (XSString)new XSStringBuilder().
buildObject(AttributeValue.DEFAULT_ELEMENT_NAME, XSString.TYPE_NAME);
attrValue2.setValue("Cap02");
attribute2.getAttributeValues().add(attrValue2);
aStatement.getAttributes().add( attribute1);
aStatement.getAttributes().add(attribute2);
assertion.getAttributeStatements().add((org.opensaml.saml.saml2.core.AttributeStatement) aStatement);
evidence.getAssertions().add(assertion);
return evidence;
}
private static Action getAction(){
Action action=(Action)new ActionBuilder().buildObject();
action.setAction("Read");
action.setAction("Write");
return action;
}
private static String idGenerator(){
SecureRandom random=new SecureRandom();
return String.valueOf(random.nextInt());
}
}
这是主要课程:
import org.opensaml.core.xml.io.MarshallingException;
import org.opensaml.saml.saml2.core.Assertion;
import org.opensaml.saml.saml2.core.impl.AssertionMarshaller;
import org.opensaml.xml.util.XMLHelper;
import org.w3c.dom.Element;
public class SamlTest {
public static void main(String[] args) throws MarshallingException {
// TODO Auto-generated method stub
Assertion assertion=CreateSamlAssertion.createAssertion();
AssertionMarshaller marshaller = new AssertionMarshaller();
Element plaintextElement = marshaller.marshall(assertion);
String originalAssertionString = XMLHelper.nodeToString(plaintextElement);
System.out.println("Assertion String: " + originalAssertionString);
}
}
这是堆栈跟踪
线程“main”java.lang.NullPointerException中的异常
位于org.opensaml.core.xml.config.XMLObjectProviderRegistrySupport.getMarshallerFactory(XMLObjectProviderRegistrySupport.java:116)
位于org.opensaml.core.xml.io.AbstractXMLObjectMarshaller。(AbstractXMLObjectMarshaller.java:68)
位于org.opensaml.saml.common.AbstractSAMLObjectMarshaller。(AbstractSAMLObjectMarshaller.java:30)
位于org.opensaml.saml.saml2.core.impl.AssertionMarshaller(AssertionMarshaller.java:34)
在SamlTest.main(SamlTest.java:14)上,这为引导敲响了警钟。 你在任何地方运行过引导程序吗
DefaultBootstrap.bootstrap();
这给自举打响了警钟。 你在任何地方运行过引导程序吗
DefaultBootstrap.bootstrap();
谢谢你的回答,但现在我有另一个问题,它抛出ClassCastException这里是堆栈跟踪:`Exception in thread“main”java.lang.ClassCastException:org.opensaml.core.xml.schema.impl.XSAnyBuilder无法转换为org.opensaml.xml.xmlObjectBuilder我建议发布一个新问题,作为一个新问题,我暂时不能问,我必须等待2天才能再次询问感谢先生的答案,但现在我有另一个问题,它引发了ClassCastException这是堆栈跟踪:`线程“main”java.lang.ClassCastException中的异常:org.opensaml.core.xml.schema.impl.XSAnyBuilder无法转换为org.opensaml.xml.xmlObjectBuilder我建议发布一个新问题,我暂时不能问,我必须等待2天才能再次问