【发布时间】:2010-04-08 17:22:34
【问题描述】:
我已阅读其他问题,他们大多谈论这样做的安全性。这不完全是我关心的问题,主要是因为该网站的问题是基于浏览器的游戏。然而,更大的问题是用户 - 并不是每个用户都有足够的文化来理解 OpenID。当然,RPX 使这很容易,这就是我将使用的,但是如果用户没有 Google 或 Facebook 或其他任何帐户,或者不信任系统使用现有帐户登录怎么办?他们必须在另一个提供商处获得一个帐户 - 我相信大多数人都会知道如何这样做,更不用说费心去做了。
还有如何在应用中管理的问题。一个用户可能想在一个账户中使用多个身份,所以处理起来并不像用户名+密码那么简单。如何将用户的 OpenID 身份存储在数据库中?使用 OpenID 也给了我一个好处:RPX 可以提供广泛的个人资料信息,因此我可以预先填写个人资料表格并要求用户根据需要进行编辑。
我目前有这个:
Users:
------
ID Email Etc.
-- --------------- ----
0 bob@yahoo.com ...
1 alice@yahoo.com ...
UserOpenIDs:
------------
ID UserID OpenID
-- ------ ------
0 0 0
1 0 2
2 1 1
OpenIDs:
--------
ID Provider Identifier
-- -------- ----------------
0 Yahoo https:\\me.yahoo.com\bob#d36bd
1 Yahoo https:\\me.yahoo.com\alice#c19fd
2 Yahoo https:\\me.yahoo.com\bigbobby#x75af
使用这些外键:
UserOpenIDs.UserID -> Users.ID
UserOpenIDs.OpenID -> OpenIDs.ID
这是在数据库中存储 OpenID 标识符的正确方法吗?我如何将 RPX 给我的标识符与数据库中的一个匹配以登录用户(如果标识符已知)。
所以这里有一些具体的问题:
- 如何让没有 OpenID 或不想使用 OpenID 的用户访问它? (例如,使用他们的 Google 帐户登录的安全问题)
- 如何将标识符存储在数据库中? (我不确定上面的表格是否正确)
- 我需要采取哪些措施来防止某人以其他用户身份登录并愉快地使用他们的帐户进行任何操作? (据我了解,RPX 通过 HTTP 发送标识符,所以任何人都需要做的就是以某种方式获取它,然后在“OpenID”字段中输入)
- 使用 OpenID 时我还需要注意什么?
【问题讨论】:
-
嘿,我自己是 OpenId 的新手,但在我自己的网站上考虑它。对于您的第三个问题“措施...以防止某人以其他用户身份登录...”,据我了解 OpenId,您从不接受来自不受信任来源的 OpenId Url。在实施过程中,您的站点托管提供商的登录信息,提供商的站点直接与您联系,因此您始终接受来自受信任站点的 OpenId Url。