0

我们为网站提供后端 (RESTful) 服务,该服务依赖于在多个不相关的网站上唯一标识同一用户。我们一直使用电子邮件地址作为唯一标识符,但并非所有网站都使用电子邮件地址,尤其是当这些网站使用 OpenID 身份验证时。

那么,OpenID 是否提供了在多个依赖方之间相同的唯一标识符(如果用户使用相同的 OpenID 进行身份验证)?

如果是这样,如果目标是多个不相关的网站在每个都有相同的 OpenID 用户时提供相同的标识符,那么如何指示一系列独立网站为我们提供每个用户的用户标识符?

此外,我们的目标是让使用我们 API 的开发人员尽可能轻松地做到这一点。因此,如果您知道任何已经解决此问题的优秀 API 文档,那么指向该文档的链接将非常有帮助。

4

1 回答 1

0

在不了解您的 Web 服务或其编写的语言的情况下,我不确定我的答案会有多大帮助,因为它相当笼统且技术性较低。

响应识别/授权请求的 OpenID 提供者将响应“声明的 ID”和“身份”以及任何请求的“属性交换”。属性交换信息可以是诸如电子邮件/用户名/语言/实名/等可能是您正在寻找的内容。

Google(作为 OpenID 提供者)支持查询一个像样的数字属性交换信息,并在他们的文档中提供了一个列表: https ://developers.google.com/accounts/docs/OpenID#Parameters

OpenID 身份对用户来说应该是唯一的,但即使是从同一提供商颁发的,也不能将他们交叉识别到不同的网站。(它可以是发给它的 RP 唯一的定向 ID)。在这里查看更多信息: openid.claimed_id 是静态的吗?

综上所述,作为 API 的设计者,定义使用 Web 服务所需的某些信息(即电子邮件地址)是完全合理的。然后将其留给希望使用您的网络服务以某种方式获取该信息的各方(直接询问用户,或通过属性交换等)。


有关 OpenID 的更多信息,我会查看他们的网站,特别是规范和库: http : //openid.net/specs/openid-authentication-2_0.html http://openid.net/developers/libraries/

以一些好的文档作为起点的库包括:


直接实施 OpenID 身份验证不适用于后端 Web 服务,因为最终用户没有参与(即无法提供凭据)。

为了满足您在各种 3rd 方网站上识别同一用户的要求,您可能需要成为 OpenID提供商。然后提供进一步的 API 以允许用户在 3rd 方网站上的功能链接到您管理的他们的 OpenID 个人资料。

如果不是身份的实际提供者...与第 3 方共享 OpenID 身份可能是一个潜在的安全/隐私问题,或者至少违反 OpenID 的规范(它将交换描述为 RP 和操作)。尽管这可能超出了您想要做的范围,但作为 OpenID 提供者至少会消除许多隐私问题,因为用户必须明确选择加入。

我不知道有任何 API 可以在没有直接用户交互的情况下跨多个 3rd 方网站处理唯一标识用户。我编写的大多数 Web 服务都需要提供直接用户凭据(用户知道这一点),或者只需将用户标识为特定客户端的唯一用户。在后一种情况下,用户身份验证并不总是必要的,客户端可以进行全面身份验证,然后提供自己的唯一 ID 来跟踪用户,让 Web 服务对用户的实际构成视而不见。不幸的是,您的要求似乎不适合这些常见场景。


在设计 API 时要考虑的最后一件事......

向第三方提供唯一可识别信息(即电子邮件地址)可能会引起互联网隐私圈的一些关注。特别是如果从交换中获得任何经济收益(广告/直接支付/等),或者如果信息的使用是未知的/不安全的或其他不受欢迎的。 http://www.ehow.com/about_5332990_legal-sell-email-list.html http://www.aclu.org/technology-and-liberty/internet-privacy

您可能希望确保您的目标客户(您的 Web 服务的消费者)在他们的术语中使用正确的术语,或者可以为他们的用户提供足够的权力,允许他们选择不提交到您的服务中。并清楚地说明你在用这些信息做什么......

诸如此类的问题可能会阻碍您的 API 被接受,因此值得考虑。

于 2013-02-14T08:03:25.283 回答