I have implemented OpenId authentication some time ago and to remember users I used ClaimedIdentifier (in the terms of DotNetOpenAuth) - the string returned by OpenId provider after authentication.
But suddenly I understood this solution has a vulnerability. Let's imagine there is OpenId provider 1 that returns identified "identifier1" for user 1. Now if I know this identifier I can start up my custom OpenId provider and return the same identifier - so I will be able to login under the user 1.
Now I am thinking about storing openid_identifier (the OpenId provider url) + ClaimedIdentifier.
Am I right in my thinking? Haven't I missed any other possible vulnerability?