【问题标题】:Symfony 2 functional tests: bypassing sslSymfony 2 功能测试:绕过 ssl
【发布时间】:2015-05-28 05:00:29
【问题描述】:

我正在使用经过身份验证的用户来测试不使用 prod 环境中的 shibboleth 提供程序的登录页面。但是在运行测试时,我似乎获得了 500 http 状态。这是配置:

security_test.yml

security:
    encoders:
        Symfony\Component\Security\Core\User\User: plaintext

    role_hierarchy:
        ROLE_ADMIN:       ROLE_USER
        ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]

    providers:
        test:
            memory:
                users:
                    admin: { password: adminpass, roles: ['ROLE_ADMIN'] }

    firewalls:
        secured_area:
            pattern:    ^/apps
            http_basic:
                realm: "Secured Area"
            provider: test

ControllerTest.php

class GenerateResetcodeControllerTest extends WebTestCase {

    private $client = null;

    public function setUp()
    {
        $this->client = static::createClient();
    }

    /**
     * @group debug
     */
    public function testGenerateResetCodeAction()
    {

        $crawler = $this->client->request('GET', '/apps/resetcode', array(), array(), array(
            'PHP_AUTH_USER' => 'admin',
            'PHP_AUTH_PW'   => 'adminpass',
        ));
        $this->assertEquals(200, $this->client->getResponse()->getStatusCode());
    }
}

app/logs/test.log

[2015-03-24 11:15:54] app.CRITICAL: SSL connect error [] []
[2015-03-24 11:15:54] request.CRITICAL: Uncaught PHP Exception Util\XMLApiCallerBundle\Call\XMLApiCallerException: "System Unavailable" at /var/www/src/AccountServicesBundl
e/Services/AccountServiceRest.php line 149 {"exception":"[object] (Util\\XMLApiCallerBundle\\Call\\XMLApiCallerException(code: -1): System Unavailable at /var/www/src/AccountServicesBundle/Services/AccountServiceRest.php:149)"} []

有什么办法可以绕过 SSL 吗?

【问题讨论】:

    标签: php symfony ssl


    【解决方案1】:

    我认为您不必绕过安全连接。试试这个:

    $crawler = $this->client->request('GET', '/apps/resetcode', array(), array(),
        array(
            'PHP_AUTH_USER' => 'admin',
            'PHP_AUTH_PW'   => 'adminpass',
            'HTTPS' => true
        )
    );
    

    public function setUp()
    {
        $this->client = static::createClient(array(), array('HTTPS' => true));
    }
    

    它应该发出 HTTPS 请求。如果你真的想绕过 SSL,你可以为测试环境创建 routing_test.yml 并覆盖路由定义,但这取决于你如何强制 https 限制。

    【讨论】:

    • 我尝试使用 HTTPS,但仍然收到相同的消息。配置有问题。有什么地方可以缩小范围吗?
    • 你确定你的问题真的出在 SSL 上吗?尝试删除 HTTPs 限制并在 HTTP 上再次运行测试。你有防火墙下的 prod confsecured_area 密钥吗?也可以查看第 149 行的src/AccountServicesBundle/Services/AccountServiceRest.php。为什么会抛出异常?真的很难说真正的问题在哪里:-(。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-06
    • 2012-09-10
    • 2022-01-06
    • 1970-01-01
    • 2013-11-12
    • 2012-08-11
    相关资源
    最近更新 更多