如何设计安全性以使用 Spring 进行集中式身份验证器? [关闭]

Posted

技术标签:

【中文标题】如何设计安全性以使用 Spring 进行集中式身份验证器? [关闭]【英文标题】:How can I design the security to have a centralized authenticator using Spring? [closed] 【发布时间】:2019-10-11 04:42:18 【问题描述】:

我想要一个用于各种 App 的集中式身份验证器。此身份验证器必须允许我使用 Facebook、Google 和表单(使用我的本地数据库)登录。

我可以为我自己的数据库使用 Google、Git 和 Facebook 的 Oauth2 和 OpenId 连接(特别是 mitreID 连接)吗?

特别是我不知道是否有必要为此目的使用 openId。

最好的方法是什么?

【问题讨论】:

【参考方案1】:

GitHub 存储库中的Apache Oltu OAuth 2.0 Client and Provider 是 Apache Oltu 的一个分支,Pull Request #10 用于两个新提交“添加提供程序演示和自述文件”。

(1) 引用“此身份验证器必须允许我使用 Facebook、Google 和表单(使用我的本地数据库)登录。”

回应: 您可以按照 README 说明构建 Oltu 并运行 OAuth 2.0 客户端演示和 OAuth 2.0 提供程序演示,以说明本地 OAuth 2.0 客户端和本地 OAuth 2.0 服务器、Facebook、Google、Github 之间的 OAuth 2.0 身份验证/授权流程, LinkedIn、微软和 Instagram。

您可以修改“demos/client-demo/src/main/webapp/WEB-INF/views/index.jsp”以在表单下方列出 Facebook 和 Google 的登录按钮(使用我的本地数据库)。

备注:出于演示目的,本地 OAuth 2.0 服务器(由Apache Oltu OAuth 2.0 Client and Provider 在 GitHub 存储库开发)使用数据文件“demos/provider-demo/src/main/java/org/apache /oltu/oauth2/provider/demo/Common.java”而不是本地数据库来存储用户信息。

(2) 问题“我可以将 Oauth2 用于 Google、Git 和 Facebook 并将 OpenId 连接(特别是 mitreID 连接)用于我自己的数据库吗?”

回答: 是的。您可以将 Oauth2 用于 Google、Git 和 Facebook,并将 OpenId 连接(特别是 mitreID 连接)用于您自己的数据库。您只需要将 Google、Git 和 Facebook 发送的用户信息和 OpenId 连接(特别是 mitreID 连接)与存储在您自己的数据库中的本地用户信息进行映射。

代码“demos/client-demo/src/main/java/org/apache/oltu/oauth2/client/demo/controller/ResourceController.java”resourceResponse.getBody()检索由 Google、Git 和 Facebook 发送的用户信息和 OpenId 连接(特别是 mitreID 连接)。

(3) 引用“特别是我不知道是否有必要为此使用openId。”

回应:Apache Oltu OpenID Connect Client and Provider GitHub 仓库,开发了一个本地 OpenID Connect 客户端和一个基于 Apache Oltu 的 OpenID Connect 服务器,可以作为集中式 OpenID Connect 客户端的参考”如果有必要使用 openId 作为您的各种 App 的集中身份验证器”。

【讨论】:

以上是关于如何设计安全性以使用 Spring 进行集中式身份验证器? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

使用 Spring Security + Spring 数据 + MongoDB 进行身份验证

使用 JWT 的 Spring 安全性,如何使用 JwtAuthenticationFilter 对 /login 等某些端点进行身份验证?

如何使用 xml 配置文件、JAVA、Spring 安全性对 LDAP 用户进行身份验证

如何在 Spring MVC 中模拟安全上下文以进行测试

Spring安全和角度

如何使用 React 前端和 Spring Boot 安全后端进行客户端身份验证检查?