我使用Symfony 2.0和simplesamlphp完全没有问题。
当我迁移到Symfony 2.1时,使用simplesamlphp stoped工作进行外部身份验证。
经过一些研究后,我发现Symfony 2.1 HTTP Foundation现在已经在http://symfony.com/doc/master/components/http_foundation/sessions.html中记录了会话管理。
问题发生是因为simplesamlphp服务提供者启动一个新会话而不是重新启动初始会话(可能是因为它使用了诸如session_start()或session_id()之类的php函数。
如果我使用
storage_id: session.storage.mock_file
身份验证有效,但csrf保护在所有形式都失败。
Symfony 2.0没有发生这种情况。
这是否意味着Symfony 2.1现在与外部身份验证提供程序不兼容?
有没有办法使用symfony Session Managment进行AVOID?我应该将此报告为改进/错误吗?
提前致谢,
Afonso Martins Vaz
答案 0 :(得分:1)
我刚遇到类似的问题,在探索NativeFileSessionStorage后,我发现Symfony 2.1将会话保存在...缓存文件夹中。简单的配置更改:
framework:
...
session:
name: %session_name%
cookie_domain: %cookie_domain%
cookie_path: %cookie_path%
save_path: ~
为我做了一个技巧 - 最后一个参数 save_path 将cookie保存路径重置为默认值,因此SimpleSamlPhp库现在可以读取身份验证数据。
答案 1 :(得分:0)
我们通过使用memsache和simplesaml php解决了这个问题。 (see this link)
这样simplesamlphp会话不会弄乱Symfony2 Session,我们可以同时使用Symfony2.1默认配置。