【问题标题】:Spring security with Flex using Container Preauth使用 Container Preauth 的 Flex 的 Spring 安全性
【发布时间】:2010-09-20 21:07:38
【问题描述】:

我已经配置了 Spring Security 预身份验证示例并与 JBoss 一起使用。下一步是以某种方式将用户信息导入 flex 客户端 GUI。

有哪些方法可以让我获得由 spring-security 在 http 访问 flex 客户端时创建的 Authentication 或 UserDetails 对象?由于我在外部登录,我不能使用 channelset.login(),对吧?到目前为止我看到的所有示例都假设用户通过 flex 客户端手动登录,但要求是基于容器的身份验证。

使用 flex3、spring 3.0.4、spring-security-3.0.3

【问题讨论】:

  • 我不明白问题出在哪里... ChannelSet.login() 将访问与 HTTP 登录相同的 AuthenticationProvider,那么您为什么不能使用 Flex 应用程序登录?跨度>
  • 我正在尝试做一些更复杂的事情。 flex 中不会有用户名/密码对话框。 spring-security 是否知道 flex 客户端与原始的预认证 http 会话有任何关系?它会命中相同的身份验证提供程序,但它会自动拉回用户身份验证令牌而不输入用户名和密码吗?

标签: apache-flex spring jakarta-ee spring-security blazeds


【解决方案1】:

如果您将 spring-flex 与 blazeds 一起用于 flex 到 java http 管道, 那么你要做的就是:

  • 在 web.xml 中启用 Spring Security 过滤器链

  • 使用您预期的安全限制来保护您的 blazeds 服务

  • 让您的 spring-security AuthenticationProvider 使用您的身份验证机制

【讨论】:

    【解决方案2】:

    Adobe DevNet 上有一篇文章涵盖了这个主题: http://www.adobe.com/devnet/flex/articles/flex_security.html

    【讨论】:

    • 这是让用户在 flex 中输入用户名和密码的示例之一。我不想要那个。用户在访问 flex 客户端之前已经通过 http BASIC 进行了身份验证,现在我想将这些数据提取到 flex 中。
    • 啊,我不是 Spring 专家,但通常在这些类型的场景中,答案是访问 HTTP 端点以返回可用于 Flex ChannelSet.login 的凭据()。
    • 如果您使用的是 HTTP 端点并且您的 Flex 端点与您的 HTTP 身份验证端点位于同一域中,那么您只需检查 cookie 即可强制执行。
    【解决方案3】:

    使用 PreAuthenticatedAuthenticationProvider 作为您的身份验证提供程序。 Flex 会话将自动与 HTTP 会话进行 1:1 映射,您可以使用会话范围调用 SecurityContextHolder.getContext().getAuthentication() 来访问身份验证对象

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-07
      • 2015-04-10
      • 2019-09-23
      • 2013-09-15
      相关资源
      最近更新 更多