2

我使用 Symfony 2.0 和 simplesamlphp,完全没有问题。

当我迁移到 Symfony 2.1 时,使用 simplesamlphp 的外部身份验证停止工作。

经过一番研究,我发现 Symfony 2.1 HTTP Foundation 现在有一个会话管理记录在http://symfony.com/doc/master/components/http_foundation/sessions.html中。

问题的发生是因为 simplesamlphp 服务提供者启动了一个新会话而不是重新启动初始会话(可能是因为它使用了 php 函数,例如 session_start() 或 session_id())。

如果我使用

storage_id: session.storage.mock_file

身份验证有效,但所有形式的 csrf 保护均失败。

Symfony 2.0 没有发生这种行为。

这是否意味着 Symfony 2.1 现在与外部身份验证提供程序不兼容?

有没有办法避免使用 symfony 会话管理?我应该将此报告为改进/错误吗?

提前致谢,

阿方索·马丁斯·瓦兹

4

2 回答 2

1

我刚刚遇到了类似的问题,在浏览了 NativeFileSessionStorage 之后,我发现 Symfony 2.1 将会话保存在...缓存文件夹中。简单的配置更改:

framework:
    ...
    session:
        name:          %session_name%
        cookie_domain: %cookie_domain%
        cookie_path:   %cookie_path%
        save_path:     ~

为我做了一个技巧——最后一个参数save_path将 cookie 保存路径重置为默认值,因此 SimpleSamlPhp 库现在可以读取身份验证数据。

于 2013-01-23T16:17:39.013 回答
0

我们通过使用 memcache 和 simplesaml php 解决了这个问题。(见这个链接

这种方式 simplesamlphp 会话不会与 Symfony2 会话混淆,我们可以将两者与 Symfony2.1 默认配置一起使用。

于 2013-03-14T13:13:56.130 回答