Details
-
Type:
Bug
-
Status: Closed
-
Priority:
Major
-
Resolution: Fixed
-
Affects Version/s: 3.1.7, 3.1.8
-
Component/s: WS-* Components
-
Labels:None
-
Estimated Complexity:Unknown
Description
when using an asymmetricBinding, when requested in parallel, quite a few requests fail, where the client could not associate a symmetric key with the response.
As it turned out, the symmetric key was stored temporarily in a cache using an id that is not unique at all.
SymmetricBindingHandler.java
// line 985 via 162 tokenStore.add(tempTok); // line 182 tok = tokenStore.getToken(tokenId);
This leads to a race condition if another thread reaches line 162 before the key is retrieved in 182 and the same id is used.
In my case, the id was "_5002" consistently.
We implemented a hack using a ThreadLocal based TokenStore, but I think the symmetric key should actually not be cached at all.