基于Java的产品的身份验证解决方案

时间:2018-08-08 13:02:56

标签: java authentication oauth-2.0 saml-2.0 openid-connect

我们正在开发基于Java的产品。我们需要使身份验证部分适合主要的身份验证服务,例如LDAP,OpenID,Oauth2,SAML。这个想法是,当我们为拥有LDAP的公司部署产品时,我们的产品应该能够满足需求。如果公司拥有OAuth2,那么我们的产品也应该能够满足这一要求。

我想知道,什么是更好的方法和工具。我正在寻找一种开源解决方案,该解决方案可以在一处支持所有这些协议。请分享知识。

3 个答案:

答案 0 :(得分:1)

简单的方法是使用IAM(身份和访问管理)解决方案。 Kecloak是一个很好的开源代码(并且是用Java编写的,但您不必介意)。

顺便说一句,您的问题是题外话(推荐软件或工具)。发布here

答案 1 :(得分:0)

我建议使用Spring Security。它完全独立于Spring Core框架,并通过一些简单的配置和一些其他的库(也由同一团队开发),可以为大多数流行的身份验证方法提供一个简单的解决方案。

通过几个注释,您可以配置要保护的方法或端点。

您可以创建spring配置文件,由他们决定要使用的身份验证方法。

答案 2 :(得分:0)

您需要分离出身份存储库和身份协议。

LDAP和AD是存储库。

OpenID,OAuth2,SAML是协议。

您需要一个IAM系统,该系统可以处理所有协议并位于存储库的顶部。

要让您的产品与IAM对话,您的产品中需要一个协议栈,例如为SAML

然后,您将IAM与其他供应商联合起来。如果供应商出现并希望通过其AD进行身份验证,则他们将安装ADFS,然后将ADFS与您的IAM系统联合。

因此逻辑流程继续:

用户->通过其IAM进行身份验证->受您的IAM信任->授予对您的应用程序的访问权限。

您还可以查看身份即服务,例如Azure AD,Auth0,Okta等。