OpenAM 和 Spring Security 4 集成

Posted

技术标签:

【中文标题】OpenAM 和 Spring Security 4 集成【英文标题】:OpenAM and Spring Security 4 Integration 【发布时间】:2015-11-02 04:14:36 【问题描述】:

我正在构建一个带有数十个 RESTful Web 服务的 Spring-MVC-Hibernate 后端。前端可能是 html5、CSS3 和 JQuery 网络应用程序,它利用我正在开发的后端网络服务。

我们在 Tomcat 服务器上有一个 OpenAM 10.x SSO 系统,我们希望我们在身份验证时,这里没有授权规则或组。我看到的所有文档都是未知版本的 OpenAM 和 Spring Security 3。我们有 OpenAM 10.x,不知道升级到最新 OpenAM 的时间。我们计划使用目前最新的 Spring Security 4.0.3。

1) 我们可以做到这一点的一种方法是建立一个信任圈,然后建立一个 IDP 和一个 SP,然后我们将有一个 URL 来执行联合 SSO。我相信这就是我们的前端将如何获得身份验证并将令牌返回到前端并可能存储为 cookie。

2) 我看到的另一种方法是简单地调用 OpenAM restful api,传入用户名和密码并获取令牌。然后,该令牌将用于传递到后端 RESTful api 以确保安全。

我们肯定会为用户、角色和权限(授权)使用 Spring Security,那么我们可以这样做吗?对用户、角色和权限使用 Spring Security 4.0.3,但使用 OpenAM 进行身份验证???

任何信息都会非常有帮助。谢谢!

【问题讨论】:

【参考方案1】:

我们一直在用我们的一个应用程序做类似的事情。我们从使用 OpenAM 12 开始,现在使用 OpenAM 13 SNAPSHOT。

不过,我们一直在使用 OpenID Connect 进行集成,而不是 SAML。 这对我们来说是一个很好的起点:https://github.com/fromi/spring-google-openidconnect。

我们在 OAuth2ProtectedResourceDetails 中使用默认标头/基本方案,而不是示例中的表单。

在 OpenAM 上,您必须配置 OpenID Connect Provider。 OpenAM 13 中的步骤:

    以 amAdmin 身份登录。 选择领域。 登录页面(仪表板/领域概览)将列出常见任务。 选择配置“OAuth Provider”,然后选择“配置 OpenID Connect”。 选择默认值并点击创建。

然后您必须添加代理/客户端。 OpenAM 13 中的步骤:

    在领域配置页面中,选择代理。 选择 OAuth 2.0/OpenID Connect 客户端。 单击新建按钮,输入 client_id 和 client_secret 值并创建代理。 点击新创建的代理,进一步配置redirect_uri、作用域等参数。

如果您无法选择 OpenAM 12 或 13 并且坚持使用 OpenAM 10,则此信息可能没有用。

【讨论】:

非常感谢您的回复。我的经理最近告诉我,我们将使用 OpenAM12 ......或者任何最新的产品。所以,当我开始这个项目时,我们不必处理 OpenAM 10,再次感谢! 所以......在查看了 SpringSource David Syers 的各种视频之后,看起来我们现在将使用 OpenAm 10 中的 Oauth2,然后在 OpenAM 12 上使用。所以,现在我正在寻找一个 spring-security.xml 示例,以及我能找到的任何其他信息。 如果您正在查看 OAuth2,我只想指出 OpenID Connect 是建立在 OAuth2 之上的身份验证机制。 OAuth2 中的 Auth 用于授权,而不是身份验证。 这一切都很高兴知道,因为我绝对是这个领域的新手,所以我试图尽可能多地吸收。但是让我问一下……因为我知道我现在可以从 OpenAM 10 的 RESTful URL 获取令牌……你认为可以配置一个 spring-security.xml 文件来使用它吗?这真的是我的下一步......我已经把所有的罐子都拉进去了,现在我只需要开始配置了。我知道有些像配置类,但我对 xml 文件很满意。感谢您的所有帮助。 是的,您可以使用 OpenAM 的 RESTful API,但这会将您与 OpenAM 联系起来。对我们来说,整个目标实际上是构建我们的应用程序以使用标准 SSO 技术,如 OpenID Connect (OAuth2),以便我们可以轻松切换 OpenAM 并使用另一个 SSO 产品(可能是客户端已经在使用的产品)。关于 spring XML 配置,抱歉,我没有任何参考资料。顺便说一句,我发现这对理解基础知识非常有用:nordicapis.com/api-security-oauth-openid-connect-depth

以上是关于OpenAM 和 Spring Security 4 集成的主要内容,如果未能解决你的问题,请参考以下文章

带有 Spring 会话的 Spring Security SAML

Spring session 与 spring security saml 的集成

Spring 安全 SAML OpenAM

没有完全实施 OpenAM 或 OpenSSO 的 OpenAM 或 OpenSSO fedlets 作为 SP 和 ADFS 作为 IdP?

基于OpenAM系列的SSO----基础

Ajax 登录并以 json 格式获取数据 (OpenAM)