IIRC openid4java library expects the association handle to be in a specific
format - so you cannot have a generated UUID there..

If you change it to UUID and test it you will see the exact issue..

Thanks & regards,
-Prabath


On Tue, Sep 2, 2014 at 8:47 PM, Tharindu Edirisinghe <tharin...@wso2.com>
wrote:

> I am working on some performance improvements on OpenID in Identity Server
> (using the IS 3.2.3). The method to generate Associations is synchronized
> and so it will lock the entire method. As I see, the reason for this is to
> avoid duplicate values for association handle.
>
>
> components/identity/org.wso2.carbon.identity.provider/3.2.0/src/main/java/org/wso2/carbon/identity/provider/openid/OpenIDServerAssociationStore.java
>
>
> The generate method is synchronized. According to the code, this is needed
> to avoid conflicts with having duplicate handle values.
>
>
>      public synchronized Association generate(String type, int expiryIn)
>
>           throws AssociationException {
>
>       String handle = storeId + timestamp + "-" + counter++;
>
>       Association association = Association.generate(type, handle,
> expiryIn);
>
>       // caching the association
>
>       cache.addToCache(association);
>
>       // persisting in the database
>
>       log.debug("Stroing association " + association.getHandle()
>
>               + " in the database.");
>
>       new
> OpenIDAssociationDAO(associationStoreType).storeAssociation(association);
>
>       return association;
>
>    }
>
> Suggested code is below. The getUUID() method is already synchronized.
>
> import org.apache.ws.security.util.UUIDGenerator;
>
>     public Association generate(String type, int expiryIn)
>
>           throws AssociationException {
>
>       String handle = UUIDGenerator.getUUID();
>
>       Association association = Association.generate(type, handle,
> expiryIn);
>
>       // caching the association
>
>       cache.addToCache(association);
>
>       // persisting in the database
>
>       log.debug("Stroing association " + association.getHandle()
>
>               + " in the database.");
>
>       new
> OpenIDAssociationDAO(associationStoreType).storeAssociation(association);
>
>       return association;
>
>    }
>
> Was there any specific requirement to generate the handle like below ?
> storeId + timestamp + "-" + counter++;
>
> Any thoughts ??
> --
>
> Thanks & Best Regards,
>
> Tharindu Edirisinghe
> Software Engineer
>
> *WSO2 Inc*
> *email   : tharin...@wso2.com <tharin...@wso2.com> *
> *mobile : +94 775 181586*
> *www: :http://wso2.com <http://wso2.com/> *lean . enterprise . middleware
>
>
>
> _______________________________________________
> Dev mailing list
> Dev@wso2.org
> http://wso2.org/cgi-bin/mailman/listinfo/dev
>
>


-- 
Thanks & Regards,
Prabath

Twitter : @prabath
LinkedIn : http://www.linkedin.com/in/prabathsiriwardena

Mobile : +94 71 809 6732

http://blog.facilelogin.com
http://blog.api-security.org
_______________________________________________
Dev mailing list
Dev@wso2.org
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to