You are viewing a plain text version of this content. The canonical link for it is here.
Posted to wss4j-dev@ws.apache.org by we...@apache.org on 2006/03/05 21:40:08 UTC
svn commit: r383396 -
/webservices/wss4j/trunk/src/org/apache/ws/security/message/WSSecSAMLToken.java
Author: werner
Date: Sun Mar 5 12:40:06 2006
New Revision: 383396
URL: http://svn.apache.org/viewcvs?rev=383396&view=rev
Log:
Refactor Add SAML token class.
Added:
webservices/wss4j/trunk/src/org/apache/ws/security/message/WSSecSAMLToken.java
Added: webservices/wss4j/trunk/src/org/apache/ws/security/message/WSSecSAMLToken.java
URL: http://svn.apache.org/viewcvs/webservices/wss4j/trunk/src/org/apache/ws/security/message/WSSecSAMLToken.java?rev=383396&view=auto
==============================================================================
--- webservices/wss4j/trunk/src/org/apache/ws/security/message/WSSecSAMLToken.java (added)
+++ webservices/wss4j/trunk/src/org/apache/ws/security/message/WSSecSAMLToken.java Sun Mar 5 12:40:06 2006
@@ -0,0 +1,121 @@
+/*
+ * Copyright 2003-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.ws.security.message;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.ws.security.message.token.UsernameToken;
+import org.apache.ws.security.util.WSSecurityUtil;
+import org.opensaml.SAMLAssertion;
+import org.opensaml.SAMLException;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+/**
+ * Builds a WS SAML Assertion and inserts it into the SOAP Envelope. Refer to
+ * the WS specification, SAML Token profile
+ *
+ * @author Davanum Srinivas (dims@yahoo.com).
+ */
+public class WSSecSAMLToken extends WSBaseMessage {
+
+ private static Log log = LogFactory.getLog(WSSecSAMLToken.class.getName());
+
+ private Document document = null;
+
+ private SAMLAssertion saml = null;
+
+ /**
+ * Constructor.
+ */
+ public WSSecSAMLToken() {
+ }
+
+ /**
+ * Creates a SAML token.
+ *
+ * The method prepares and initializes a WSSec UsernameToken structure after
+ * the relevant information was set. A Before calling
+ * <code>prepare()</code> all parameters such as user, password,
+ * passwordType etc. must be set. A complete <code>UsernameToken</code> is
+ * constructed.
+ *
+ * @param doc
+ * The SOAP enevlope as W3C document
+ */
+ public void prepare(Document doc, SAMLAssertion assertion) {
+ document = doc;
+ saml = assertion;
+ }
+
+ /**
+ * Prepends the SAML Assertion to the elements already in the
+ * Security header.
+ *
+ * The method can be called any time after <code>prepare()</code>.
+ * This allows to insert the SAML assertion at any position in the
+ * Security header.
+ *
+ * @param secHeader
+ * The security header that holds the Signature element.
+ */
+ public void prependToHeader(WSSecHeader secHeader) {
+ Element element = null;
+ try {
+ element = (Element) saml.toDOM(document);
+ } catch (SAMLException ex) {
+ throw new RuntimeException(ex.toString());
+ }
+
+ WSSecurityUtil.prependChildElement(document, secHeader
+ .getSecurityHeader(), element, false);
+ }
+
+ /**
+ * Get the id generated during <code>prepare()</code>.
+ *
+ * Returns the the value of wsu:Id attribute of this Timestamp.
+ *
+ * @return Return the wsu:Id of this token or null if <code>prepareToken()</code>
+ * was not called before.
+ */
+ public String getId() {
+ if (saml == null) {
+ return null;
+ }
+ return saml.getId();
+ }
+
+ /**
+ * Adds a new <code>SAMLAssertion</code> to a soap envelope.
+ * <p/>
+ * A complete <code>SAMLAssertion</code> is added to the
+ * <code>wsse:Security</code> header.
+ *
+ * @param doc The SOAP enevlope as W3C document
+ * @param assertion TODO
+ * @return Document with UsernameToken added
+ */
+ public Document build(Document doc, SAMLAssertion assertion, WSSecHeader secHeader) {
+ log.debug("Begin add SAMLAssertion token...");
+
+ prepare(doc, assertion);
+ prependToHeader(secHeader);
+
+ return doc;
+ }
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: wss4j-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: wss4j-dev-help@ws.apache.org