我建议使用 Spring Security。它完全独立于 Spring Core 框架,通过一些简单的配置和一些额外的库(也由同一团队开发),您可以获得大多数流行的身份验证方法的简单解决方案。通过几个注释,您可以配置要保护的方法或端点。您可以创建 spring 配置文件,由谁决定使用哪种身份验证方法。
您需要将身份存储库和身份协议分开。LDAP 和 AD 是存储库。OpenID、OAuth2、SAML 是协议。您需要一个 IAM 系统来处理所有协议并位于存储库之上。为了让您的产品与您的 IAM 对话,您的产品中需要一个协议栈,例如SAML。然后,您将您的 IAM 与其他供应商联合,例如,如果供应商出现并希望对其 AD 进行身份验证,他们将安装 ADFS,然后 ADFS 与您的 IAM 系统联合。所以逻辑流程是:用户 --> 在他们的 IAM 上进行身份验证 --> 受您的 IAM 信任 --> 授予对您的应用程序的访问权限。您还可以查看身份即服务,例如 Azure AD、Auth0、Okta 等。