Hello Ben,
I tested the Metro implementation of the stock trader app that is in the trunk
against the dotnet implementation (immediately after getting the latest
revision of both), and have included the results below. I had a failure anytime
I attempted to use any "OPSSEC" service. I included the final test (.NET for
all layers) as a sanity test. It looks like there is something wrong with my
configuration that may allow for some failures to be disregarded (unless anyone
else can verify the same results).
Client BS OPS SEC? Result
METRO METRO METRO NO PASS
METRO METRO METRO YES FAIL [1]
METRO METRO DOTNET NO PASS
METRO METRO DOTNET YES FAIL [1]
METRO DOTNET METRO NO PASS
METRO DOTNET METRO YES FAIL [2]
METRO DOTNET DOTNET NO PASS
METRO DOTNET DOTNET YES FAIL [3]
DOTNET METRO METRO NO PASS
DOTNET METRO METRO YES FAIL [4]
DOTNET METRO DOTNET NO PASS
DOTNET METRO DOTNET YES FAIL [4]
DOTNET DOTNET DOTNET YES FAIL [3]
Hope this helps in some way!
- Nick
[1] Logged in successfully. Could view portfolio and account information.
Buying and selling shares sent me back to login screen, and never completed
successfully. The following error was recorded in the server logs each time:
Log Level WARNING
Logger javax.enterprise.system.stream.err
Name-Value Pairs
_ThreadID=22;_ThreadName=DataHandler.getInputStream;_RequestID=e1507475-d159-4ebf-9ae0-01887769bb2d;
Record Number 526
Message ID com.sun.xml.wss.impl.XWSSecurityRuntimeException
Complete Message Unable to calculate cipher value as invalid key was provided
at
com.sun.xml.ws.security.opt.impl.enc.CryptoProcessor.encryptData(CryptoProcessor.java:241)
at
com.sun.xml.ws.security.opt.impl.enc.CryptoProcessor.encrypt(CryptoProcessor.java:126)
at
com.sun.xml.ws.security.opt.impl.util.CVDataHandler.writeTo(CVDataHandler.java:55)
at javax.activation.ObjectDataContentHandler.writeTo(DataHandler.java:897) at
javax.activation.DataHandler$1.run(DataHandler.java:279) at
java.lang.Thread.run(Thread.java:619) Caused by:
java.security.InvalidKeyException: Illegal key size or default parameters at
javax.crypto.Cipher.a(DashoA13*..) at javax.crypto.Cipher.a(DashoA13*..) at
javax.crypto.Cipher.a(DashoA13*..) at javax.crypto.Cipher.init(DashoA13*..) at
javax.crypto.Cipher.init(DashoA13*..) at
com.sun.xml.ws.security.opt.impl.enc.CryptoProcessor.initCipher(CryptoProcessor.java:102)
at
com.sun.xml.ws.security.opt.impl.enc.CryptoProcessor.encryptData(CryptoProcessor.java:195)
... 5 more
[2] Saw the following error with a debugger attached to the Business Service
while attempting to buy stocks:
MessageSecurityException was unhandled by user code.
An unsecured or incorrectly secured fault was received from the other party.
See the inner FaultException for the fault code and detail.
[3] Saw the following error with a debugger attached to the Business Service
while attempting to buy stocks:
SecurityNegotiationException was unhandled by user code
Secure channel cannot be opened because security negotiation with the remote
endpoint has failed. This may be due to incorrectly specified EndpointIdentity
in the EndpointAddress used to create the channel. Please verify the
EndpointIdentity specified or implied by the EndpointAddress correctly
identifies the remote endpoint.
[4] Encountered the following error when attempting to buy stocks:
Server Error in '/trade' Application.
--------------------------------------------------------------------------------
com.sun.xml.ws.client.ClientTransportException: The server sent HTTP status
code 500: Internal Server Error
Description: An unhandled exception occurred during the execution of the
current web request. Please review the stack trace for more information about
the error and where it originated in the code.
Exception Details: System.ServiceModel.FaultException:
com.sun.xml.ws.client.ClientTransportException: The server sent HTTP status
code 500: Internal Server Error
Source Error:
Line 422: {
Line 423: this.Channel = null;
Line 424: throw;
Line 425: }
Line 426: }
Source File:
c:\Stonehenge\stocktrader\dotnet\trader_client\BusinessServiceClient\BusinessServiceClient.cs
Line: 424
Stack Trace:
[FaultException: com.sun.xml.ws.client.ClientTransportException: The server
sent HTTP status code 500: Internal Server Error]
System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage
reqMsg, IMessage retMsg) +7594687
System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData&
msgData, Int32 type) +275
Trade.BusinessServiceContract.ITradeServices.sellEnhanced(String userID,
Int32 holdingID, Double quantity) +0
Trade.BusinessServiceClient.BusinessServiceClient.sellEnhanced(String
userID, Int32 holdingID, Double quantity) in
c:\Stonehenge\stocktrader\dotnet\trader_client\BusinessServiceClient\BusinessServiceClient.cs:424
Trade.BusinessServiceClient.BSLClient.sell(String userID, Int32 holdingID,
Double quantity) in
c:\Stonehenge\stocktrader\dotnet\trader_client\BusinessServiceClient\BSLClient.cs:455
Trade.Web.Order.Page_Load(Object sender, EventArgs e) in
c:\Stonehenge\stocktrader\dotnet\trader_client\Trade\Order.aspx.cs:85
System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o,
Object t, EventArgs e) +14
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender,
EventArgs e) +35
System.Web.UI.Control.OnLoad(EventArgs e) +99
System.Web.UI.Control.LoadRecursive() +50
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint,
Boolean includeStagesAfterAsyncPoint) +627