1

我对 Symfony2 比较陌生。我已经使用 Symfony2 的内置安全机制构建了一个系统,通过对数据库中的用户进行身份验证。让我们称这个系统为“B”

在使用相同凭据的不同服务器上的 asp.net 中有一个应用程序(我已经从该系统复制了 users 表)。让我们将此系统称为“A”。用户是否可以单击 ASP 应用程序中的链接将他们重定向到 Symfony2 应用程序并自动验证他们而无需重新输入登录凭据?

我对系统“A”的编程控制有限。是否有可能有一个单一/静态/预定义的加密用户凭据,可以从系统 A 用于对系统 B 上的用户进行身份验证(当然提供用户类型作为数据参数,以便我可以将系统 B 中的用户限制为他/她授权的任务)。一旦通过身份验证,用户应该能够直接与 symfony2 应用程序交互,就像他们使用系统 B 的登录页面登录一样。

更清楚地说,这是事件的流程:

  1. 用户登录到 ASP.NET 系统。
  2. 用户单击链接以重定向到 Symfony2 应用程序
  3. 用户自动通过身份验证,并根据他对 Symfony2 应用程序的角色获得访问权限

请注意,我无法在 Symfony 服务器上维护用户数据库。我只会有关于可用的不同用户类型的信息。

我查看了 Symfony2 方法的自定义身份验证提供程序,但不确定它是否能解决将客户端/用户完全重定向到 Symfony2 应用程序的目的。它看起来更像是一种 Web 服务身份验证方法,但我可能错了。

SAML 是实现这一目标的更好选择吗?

4

1 回答 1

0

首先,这是一个已解决的问题。诸如OAuth之类的东西的存在是有原因的。我建议在尝试制定自己的解决方案(并处理安全后果)之前先研究一下。

但要回答你的问题:

在我看来,如果不能更改系统“A”中的某些内容,就没有安全的方法可以做到这一点。不知何故,Symfony 应用程序需要能够从系统“A”获得一些高度不可猜测的哈希令牌,以便它可以对其进行身份验证。其他任何事情都是不安全的。

理想情况下,您应该在系统“A”上创建将用户发送到 Symfony 应用程序的表单,从用户的用户名和会话或其他内容创建一个哈希,并在将用户重定向到 Symfony 应用程序时将其与用户一起发送(即在 URL参数:类似http://symfony-app.com/login?token=[the really long, un-guessable hash])。系统“B”会将该哈希值存储在数据库中一段有限的时间,并且您的 Symfony 应用程序将针对该哈希值进行身份验证。

于 2012-08-24T22:34:09.983 回答