Thanks, actually, I only need to add Bouncy Castle jar file in my class
path. But now I got a different exception as the following:
 
Exception in thread "main" AxisFault

faultCode: {http://schemas.xmlsoap.org/soap/envelope/}MustUnderstand

faultSubcode: 

faultString: Did not understand "MustUnderstand"
header(s):{http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssec
urity-secext-1.0.xsd}Security

...

Do you know why it does not recognize this MustUnderstand tag? I tried
to call WSSecHeader.setMustUnderstand( false ), but it does not help,
after WSSecEncrypt.build or WSSecSignature.build, it still has
SOAP-ENV:mustUnderstand="1". How can remove this tag?

Thanks,

 

 

Lule

        -----Original Message-----
        From: Ric Emery [mailto:[EMAIL PROTECTED] 
        Sent: Wednesday, February 21, 2007 5:23 PM
        To: Chen, Lule (CAR:2Y83)
        Cc: wss4j-dev
        Subject: Re: How to set and process x509 security token header
        
        
        I would guess that you do not have a JCE provider initialized
that supports RSA. You could use the Bouncy Castle JCE Provider that is
included with WSS4J. One way to initialize the provider is 
            Security.addProvider(new BouncyCastleProvider());
        
        
        On 2/21/07 12:23 PM, "Lule Chen" <[EMAIL PROTECTED]> wrote:
        
        

                Hi, I guess I can follow the TestWSSecurityNew11 code as
the following:
                
                ...
                
                        WSSecEncrypt encrypt = new WSSecEncrypt();
                        WSSecSignature sign = new WSSecSignature();
        
encrypt.setUserInfo("16c73ab6-b892-458f-abf5-2f875f74882e");
        
sign.setUserInfo("16c73ab6-b892-458f-abf5-2f875f74882e", "security");
                        System.out.println("Before Encryption....");
                        Document doc = env.getAsDocument();
                
                        WSSecHeader secHeader = new WSSecHeader();
                        secHeader.insertSecurityHeader(doc);
                        System.out.println(
EncryptionConstants.ALGO_ID_KEYTRANSPORT_RSA15 );
                        Document encryptedDoc = encrypt.build(doc,
crypto, secHeader);
                       Document encryptedSignedDoc =
sign.build(encryptedDoc, crypto,
                                secHeader);
                       
                ...
                
                but I always got exception at the code "Document
encryptedDoc = encrypt.build(doc, crypto, secHeader);" as the following:
                
                Exception in thread "main"
org.apache.ws.security.WSSecurityException: An unsupported signature or
encryption algorithm was used (unsupported key transport encryption
algorithm: No such algorithm: http://www.w3.org/2001/04/xmlenc#rsa-1_5)
                
                at
org.apache.ws.security.util.WSSecurityUtil.getCipherInstance(WSSecurityU
til.java:703)
                
                at
org.apache.ws.security.message.WSSecEncryptedKey.prepareInternal(WSSecEn
cryptedKey.java:189)
                
                at
org.apache.ws.security.message.WSSecEncrypt.prepare(WSSecEncrypt.java:21
6)
                
                at
org.apache.ws.security.message.WSSecEncrypt.build(WSSecEncrypt.java:253)
                
                at
com.nortel.cdma.axis.Client.NEServiceClient.main(NEServiceClient.java:23
3)
                
                I looked at the code of
org.apache.ws.security.util.WSSecurityUtil.getCipherInstance(), it looks
as the following:
                
                   public static Cipher getCipherInstance(String
cipherAlgo)
                            throws WSSecurityException {
                        Cipher cipher = null;
                        try {
                            if
(cipherAlgo.equalsIgnoreCase(WSConstants.KEYTRANSPORT_RSA15)) {
                                cipher =
Cipher.getInstance("RSA/NONE/PKCS1PADDING");
                            } else if (cipherAlgo
        
.equalsIgnoreCase(WSConstants.KEYTRANSPORT_RSAOEP)) {
                                cipher =
Cipher.getInstance("RSA/NONE/OAEPPADDING");
                            } else {
                                throw new WSSecurityException(
        
WSSecurityException.UNSUPPORTED_ALGORITHM,
                                        "unsupportedKeyTransp", new
Object[] { cipherAlgo });
                            }
                        } catch (NoSuchPaddingException ex) {
                            throw new WSSecurityException(
        
WSSecurityException.UNSUPPORTED_ALGORITHM,
                                    "unsupportedKeyTransp", new Object[]
{ "No such padding: "
                                            + cipherAlgo });
                        } catch (NoSuchAlgorithmException ex) {
                            throw new WSSecurityException(
        
WSSecurityException.UNSUPPORTED_ALGORITHM,
                                    "unsupportedKeyTransp",
                                    new Object[] { "No such algorithm: "
+ cipherAlgo });
                        }
                        return cipher;
                    }
                
                
                I looked at the value of WSConstants.KEYTRANSPORT_RSA15,
which is the same as the passed in parameter cipherAlgo, which is
http://www.w3.org/2001/04/xmlenc#rsa-1_5. I just can't understand why it
thows such an exception.
                
                 
                I badly need your help.
                
                 
                Lule
                
                -----Original Message-----
                From: Ric Emery [mailto:[EMAIL PROTECTED]
                Sent: Monday, February 19, 2007 4:42 PM
                To: Chen, Lule (CAR:2Y83)
                Subject: Re: How to set and process x509 security token
header
                
                
                
                Download the wss4j source code. There are some good
examples in the unit tests. That is how I figured it out.
                
                Good luck.
                
                
                On 2/19/07 2:15 PM, "Lule Chen" <[EMAIL PROTECTED]>
wrote:
                
                > Hi,
                >
                > I would like to know how to can create a x509 token
profile head that
                > encrypts the soap body. The sample code there creates
several username
                > tokens and adds them into the RequestSecurityToken.
But I don't want
                > any username token. Can some one show me how to do it?
                >
                > Thanks,
                >
                >
                > Lule
                >
                > -----Original Message-----
                > From: Davanum Srinivas [mailto:[EMAIL PROTECTED]
                > Sent: Tuesday, February 13, 2007 10:23 AM
                > To: Chen, Lule (CAR:2Y83)
                > Cc: [email protected]
                > Subject: Re: How to set and process x509 security
token header
                >
                >
                > Louis,
                >
                > Check the svn. It has implementation for all the
interop tests defined
                > by OASIS.
                >
                >
http://svn.apache.org/repos/asf/webservices/wss4j/trunk/interop/
                >
                > thanks,
                > dims
                >
                > On 2/12/07, Lule Chen <[EMAIL PROTECTED]> wrote:
                >>
                >>
                >>
                >> Hi, I am trying to find an sample that showing how to
use the X509
                >> token profile, the sample server and client code that
processing and
                >> generating the X509 token profile,  but could not
find any. Can some
                >> one help me by pointing me the way of doing that? Is
there a link to
                >> the sample code or introductions? Most of the samples
out there are
                >> showing how to use the username token profile.
                >>
                >>
                >> Thanks
                >>
                >>
                >>
                >> Louis
                >
                
                
                

        
        

Reply via email to