使用另一个网站的凭据登录到我自己的 Web 应用程序(例如:使用 google 登录)
Posted
技术标签:
【中文标题】使用另一个网站的凭据登录到我自己的 Web 应用程序(例如:使用 google 登录)【英文标题】:Login to my own webapplication with another website's credentials(eg: login with google) 【发布时间】:2014-04-12 10:42:34 【问题描述】:我开发了一个具有自己登录名的 Web 应用程序(spring mvc、spring security)。
现在我想更改应用程序以使用另一个网站(第二个网站)的凭据登录,并且还需要从第二个网站获取一些用户详细信息。例如:用户名、用户角色列表用于创建身份验证对象。
请帮我选择最好的方法。
openID 还是 oauth2 更适合我的客户端应用程序?
【问题讨论】:
【参考方案1】:OpenID 和 oAuth 是 2 different things。
最近,Google announced 它不再支持 OpenID,所以也许 oAuth2.0 对你来说是一个更好的选择。
请注意,如果您选择 3rd-party 的 oAuth,则会强制您的用户在那里拥有帐户。例如,如果您的应用程序(资源服务器)使用 Facebook 进行身份验证/授权,您的用户将必须在 Facebook 上拥有帐户(您想要吗?!)。
如果您使用 OpenID,您的用户可以选择在哪里持有他们的帐户...
如果您有另一个第三方(或内部,这并不重要)身份验证服务器,并且您想使用它来验证您的用户 - 您必须知道它支持哪些规范。例如,如果它支持 oAuth2.0,您可以非常轻松地配置您的应用以使用它。
希望对您有所帮助...
【讨论】:
谢谢 OhadR,我的任务不是社交网络。我们有另一个 Web 应用程序,它的数据库中有用户详细信息。我的新应用程序也适用于这些用户。所以我需要对新应用程序进行身份验证,而无需在新应用程序上再次保留用户详细信息【参考方案2】:如果我理解正确,您说的是使用 Google+、Facebook 等社交网络来登录您的应用程序(这是身份服务,您没有实际密码,而是使用有限的访问令牌范围)。
为此,有一个 Spring Social 项目,它提供了一组抽象,用于此类集成,包括额外的 Spring MVC 控制器,需要在这个社交网络。
【讨论】:
mavarazy,感谢您的快速回复。我的任务不是社交网络。我们有另一个 Web 应用程序,它的数据库中有用户详细信息。我的新应用程序也适用于这些用户。所以我需要对新应用程序进行身份验证,而无需在新应用程序上再次保留用户详细信息以上是关于使用另一个网站的凭据登录到我自己的 Web 应用程序(例如:使用 google 登录)的主要内容,如果未能解决你的问题,请参考以下文章
使用凭据或令牌从 Web 应用程序自动登录到 grafana