【问题标题】:How to authenticate on 2 different symfony2 firewalls at the same time?如何同时在 2 个不同的 symfony2 防火墙上进行身份验证?
【发布时间】:2012-10-19 23:40:45
【问题描述】:

我有一个 Symfony 应用程序,它有 2 个区域,一个用于从网页访问的客户端,另一个用于来自 AJAX 和 Web 服务的 API 调用。

这些区域中的每一个都由独立的防火墙保护。 WEB 界面使用登录表单进行身份验证,API 使用http_basic 进行身份验证。

两个防火墙都工作正常,但是当 WEB 接口对 API 接口进行 AJAX 调用时,浏览器会提示用户再次登录,即使他已经登录(通过登录表单)。这是我想要避免的。我希望两个防火墙同时进行身份验证以防止出现此提示。

我看到另一个问题完全相同同样的问题。但是他们在两个防火墙上都使用http_basic 身份验证,因此,提出的解决方案不适用于我的情况:

Authenticate multiple symfony2 firewalls with one login form

我的 security.yml

#....
firewalls:
    api:
        pattern:    ^/API
        context: primary_auth
        stateless:  true
        http_basic: 
            realm: "API: Please log in"

    web:
        pattern:    ^/
        context: primary_auth
        form_login:
            check_path: /login_check
            login_path: /login
            provider: fos_userbundle
        logout:
            path:   /logout
            target: /
        anonymous: ~

【问题讨论】:

    标签: security authentication symfony firewall


    【解决方案1】:

    你可能想看看这里:Authenticate multiple symfony2 firewalls with one login form那里有类似问题的解决方案

    引用:

    security:
    # providers etc ...
    
        firewall:
            main:
                pattern: # ...
                provider: my_users
                http_basic: ~
                context: primary_auth  # new
            api:
                pattern: # ...
                provider: my_users
                http_basic: ~
                context: primary_auth  # new
    

    【讨论】:

    • 我引用了这个答案,这是一个非常相似的问题,不同之处在于我使用了两种不同的身份验证方法(无状态 http 基本和另一种使用 cookie)我已经尝试过建议的配置,但它只是没有工作出
    • @Xocoatzin,不同的身份验证方法不应该成为防火墙之间共享上下文的问题。例如,我对标准登录表单防火墙和另一个针对 SSO 服务器进行身份验证的防火墙执行相同的操作。它们有不同类型的身份验证令牌。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-18
    • 1970-01-01
    • 2015-08-03
    • 1970-01-01
    相关资源
    最近更新 更多