将通过OpenID控制的登录页面由扩展程序控制。我可以请求URL并传入扩展名,然后使用扩展名传递OP吗?如果没有哪种数据可以通过扩展从RP转移到OP?如果是,它的可扩展性如何,我是否必须编写每个OP的单独代码,或者标准是否会帮助我? 同样在不太可能的XY问题的情况下 - 我需要某种数据,这将允许我离线验证OpenID用户(至少一次成功的在线登录后)。因此,如果我是提供登录和密码文本字段的人,我将能够使用用户的密码哈希它并用于离线身份验证。是的,我需要使用OpenID而不是其他系统,因为这是要求。对不起,这是一个丑陋的问题。
答案 0 :(得分:1)
我认为您不应该将用户ID /密码传递给OpenID提供程序(或者至少不是密码)。 OpenID背后的想法是提供商负责登录,因此利用OpenID的 web 应用程序将不知道登录凭据。 OpenID为您提供了一些authorization information,例如昵称,全名,电子邮件等。此信息与用户自身的OpenID相结合,应该足以为您提供该用户的唯一身份验证,而无需密码。
您的应用程序需要允许用户转到OpenID提供商的页面,在那里输入他们的凭据,一旦通过身份验证,您将收到来自OpenID的响应,指示身份验证是否成功并随后向您提供用户的信息。
就像我在评论中提到的那样:OpenID标准没有定义一种向OpenID提供商发送密码的方式。因此,您无法以您想象的方式使用OpenID标准。
我们以myOpenID为例:为了将myOpenID用作OpenID提供程序,您必须使用OpenID注册您的域。或者,您可以enable OpenID for your website by contacting Janrian(myOpenID的所有者),但我会说您仍然需要向他们注册网站。在任何一种情况下,您必须在您的域或您的网站上拥有一个登录页面,该页面接受来自OpenID提供程序的身份验证响应(在本例中为myOpenID)。那么让我们来看看需要什么:
最困难的部分可能是第1步和第2步,但是应该有很多在线教程可以告诉你如何做到这一点(抱歉,我没有时间查找具体的教程)。
在任何情况下,我都会想象你可以做到这一点,但这远非琐碎,而且我以前从未见过它。
OpenID如此受欢迎的部分原因正是因为人们不必与服务提供商(即您的应用)共享其凭据,他们只与OpenID提供商共享。您应该考虑的另一件事是用户是否同意以您希望他们使用OpenID的方式使用OpenID。 换句话说,人们使用OpenID提供商的一个主要原因是他们避免完全按照您的要求去做:给你他们的密码!
您可以转到新的域名注册页面,使用myOpenID注册域名:https://www.myopenid.com/new_domain