使用另一个网站的凭据登录到我自己的 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

使用 Angular 检查远程网站的登录凭据

使用安卓账号登录网站

使用 Azure 登录凭据通过 FTP 连接到 Azure 网站

是否可以在使用 Jira 凭据的 asp.net mvc 应用程序中创建登录页面?