我觉得这可能在这里的另一个问题的OAuth来回答,但我无法找到它/登录...用户身份验证使用OAuth
我已经实现Web服务上的我正在写一个OAuth提供商。我的提供程序(“应用程序”)的OAuth使用者具有使用者密钥,并以典型的OAuth方式获取用户访问令牌(获取请求令牌,重定向到我的生产者,让用户授权,获取访问令牌,存储令牌等) 。这一切工作正常。
我的问题是关于这些OAuth使用者如何使用我的应用程序的登录凭证对其进行身份验证。基本上,当有人访问消费者应用程序时,我想:
- 用户单击登录消费者网站。
- 用户被重定向到我的应用程序并呈现登录表单。
- 登录后,我的应用程序(OAuth提供程序)意识到此用户已授权此用户,并将其重定向回给用户。
- 消费者以某种方式在此请求中告知此用户的用户名(或访问令牌)。
这与典型的OAuth流程类似,不同之处在于OAuth使用者不需要为访问令牌交换授权的请求令牌。相反,只要用户通过身份验证,用户现在就知道哪个用户已通过身份验证,并且可以立即开始使用他们已存储的已存储令牌/密码发出请求。
执行此操作时需要考虑的一些安全条件是什么?这甚至有可能安全实施?天真地说,这可以通过让生产者返回一些GET参数给消费者回调来实现,用户的用户名(或其他唯一的)。但是,攻击者可以通过向用户的回叫请求用他们想要攻击的用户的用户名来利用这一点。
想法?这是一个解决的问题,我试图重新发明并重新实现?我的平台是Java,如果有库已经完成了所有这些。 谢谢!
它实际上听起来像你想要实现认证**提供者**服务。它是否正确?所以你想让它返回的结果是“是的,这个用户是犹太人”? –
是的,这基本上是我想要做的 - 让消费者重定向到我的网站,让用户输入他们的详细信息,然后告诉消费者他们很好(以及他们的用户名或其他)。我觉得这更像是一个SSO问题,而不是应该用OAuth来解决的问题,可能呢? –