我如何设计安全性以使用 Spring 进行集中式身份验证?

How can I design the security to have a centralized authenticator using Spring?

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

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

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

最好的方法是什么?

Apache Oltu OAuth 2.0 Client and Provider at GitHub repository is a fork of Apache Oltu with Pull Request #10 两个新提交 "Add provider demo and README".

(1) 引用 "This authenticator must allow me to login with Facebook, Google and with a form (using my local DB)."

回应:
您可以按照 README 说明构建 Oltu 和 运行 OAuth 2.0 客户端演示和 OAuth 2.0 提供程序演示来说明本地 OAuth 2.0 客户端和本地 OAuth 2.0 服务器之间的 OAuth 2.0 authentication/authorization 流程, Facebook、Google、Github、LinkedIn、Microsoft 和 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) 问题 "Can I use Oauth2 for Google, Git and Facebook and OpenId connect (mitreID connect in particular) for my own database?"

回答:
是的。您可以将 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) 引用 "In particular I don't know if it is necessary to use openId for this purpose."

回应:
Apache Oltu OpenID Connect Client and Provider 位于 GitHub 存储库,它开发了本地 OpenID Connect 客户端和基于 Apache Oltu 的 OpenID Connect 服务器,可以作为集中式 OpenID Connect 客户端的参考 "if it is necessary to use openId for your centralized authenticator for various App"。