Forzare HTTPS o HTTP per URL diversi

Si possono forzare aree di un sito a usare il protocollo HTTPS nella configurazione della sicurezza. Lo si può fare tramite le regole access_control, usando l’opzione requires_channel. Per esempio, se si vogliono forzare tutti gli URL che iniziano per /secure a usare HTTPS, si può usare la seguente configurazione:

  • YAML
    access_control:
        - { path: ^/secure, roles: ROLE_ADMIN, requires_channel: https }
    
  • XML
    <access-control>
        <rule path="^/secure" role="ROLE_ADMIN" requires_channel="https" />
    </access-control>
    
  • PHP
    'access_control' => array(
        array(
            'path'             => '^/secure',
            'role'             => 'ROLE_ADMIN',
            'requires_channel' => 'https',
        ),
    ),
    

Il form di login deve consentire l’accesso anonimo, altrimenti l’utente sarebbe impossibilitato ad autenticarsi. Per forzarlo a usare HTTPS, si possono usare ancora le regole access_control con il ruolo IS_AUTHENTICATED_ANONYMOUSLY:

  • YAML
    access_control:
        - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https }
    
  • XML
    <access-control>
        <rule path="^/login"
              role="IS_AUTHENTICATED_ANONYMOUSLY"
              requires_channel="https" />
    </access-control>
    
  • PHP
    'access_control' => array(
        array(
            'path'             => '^/login',
            'role'             => 'IS_AUTHENTICATED_ANONYMOUSLY',
            'requires_channel' => 'https',
        ),
    ),
    

È anche possibile specificare l’uso di HTTPS nella configurazione delle rotte, vedere Forzare le rotte per utilizzare sempre HTTPS o HTTP per maggiori dettagli.

Argomento precedente

Concetti avanzati su ACL

Argomento successivo

Limitare firewall a una specifica richiesta

Questa pagina