我有一个工作原型网站,其OpenID登录基于源自Spring Security's OpenID sample的Spring Security 3.2.0.M2,它使用openid-selector项目来选择OpenID提供程序。登录后,我使用随机UUID主键在数据库中创建一个“内部”帐户,该主键具有OpenID用户名作为列,以便稍后我可以找到相同的“内部”帐户。
我希望以与StackExchange相同的方式将其他OpenID帐户添加到同一个“内部”帐户。我可以导航到我的/login
JSP URL,使用<sec:authentication property="principal.firstname" />
我可以看到我的登录信息。如果我没有从我的网站注销,如果我点击一个链接从/login
转到另一个OpenID提供商并登录,那么当浏览器返回时,建议的方法是将新的OpenID登录链接到相同的“内部”帐户到我的网站?我认为第二次登录时会重置确定首次登录的cookie。
是否建议我在会话中放置一个nonce cookie,如果在新登录时看到,那么该网站应该询问是否应该将其添加到原始“内部”帐户?这个nonce cookie是否只能从/login
添加?这是正确的还是有更安全的方式?我想我应该远离使用电子邮件地址链接两个OpenID帐户。