Siteminder перенаправляет на защищенный файл контроллера вместо URL-адреса mod_rewrite - PullRequest
0 голосов
/ 27 мая 2020

Мне сложно это объяснить. Мой сайт использует SiteMinder для входа в систему SSO, но недавно мне потребовалось снять защиту с определенного URL-адреса для доступа к API, но SiteMinder по-прежнему будет перехватывать запрос и перенаправлять на вход в систему SSO, потому что он видит файл контроллера (приложение. php) вместо URL-адрес mod_rewrite. Моя внутренняя группа, которая управляет службой SiteMinder, заверила меня, что URL-адрес / path / api не защищен в SM.

https://my.site.com/path - SSO защищено с SiteMinder

https://my.site.com/path/api - SSO незащищенный

Если я попытаюсь попасть по URL-адресу / path / api, SM неправильно перехватит его с следующее (очищено для ясности):

# curl -v https://my.site.com/path/api
* About to connect() to my.site.com port 443 (#0)
*   Trying 1.1.1.1...
* Connected to my.site.com (1.1.1.1) port 443 (#0)
> GET /path/api HTTP/1.1
> User-Agent: curl/7.29.0
> Host: my.site.com
> Accept: */*
>
< HTTP/1.1 302 Found
< Date: Wed, 27 May 2020 14:23:53 GMT
< Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/7.4.5
< Cache-Control: no-store
< Location: https://authdev.myorgsso.com/CertAuthV3/forms/KrbPivOrFormLogin.aspx?...snip...&TARGET=-SM-https%3a%2f%2fmy%2esite%2ecom%2fpath%2fapp_dev%2ephp

Обратите внимание на app_dev. php в конце заголовка Location. SM пытается перенаправить / защитить app_dev. php вместо правильного URL / path / api.

Мой сайт закодирован с использованием структуры Symfony и использует стандартный файл .htaccess для перезаписи URL :

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
    RewriteRule ^(.*) - [E=BASE:%1]
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    RewriteCond %{ENV:REDIRECT_STATUS} ^$
    RewriteRule ^app_dev\.php(/(.*)|$) %{ENV:BASE}/$2 [R=301,L]
    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule .? - [L]
    RewriteRule .? %{ENV:BASE}/app_dev.php [L]
</IfModule>
...