Отключите регистрацию Shibboleth на одном URL-маршруте в Apache mod_rewrite

У меня есть веб-приложение, работающее на платформе PHP Codeigniter, которая использует правила перезаписи для перезаписи маршрутов в фронт-контроллер index.php. Что я хочу сделать, это исключить один маршрут из аутентификации Шибболет.

Пример:
У нас есть 2 маршрута https://example.com/view/1457 а также https://example.com/public/view/1457.
Первая ссылка должна требовать от пользователя входа через Shibbo, а вторая — нет. Оба маршрута переписаны на https://example.com/index.php?/view/1457 а также https://example.com/index.php?/public/view/1457. У меня есть одно правило перенаправления в apache conf для перенаправления view / public / 12345 на public / view / 12345. Другой не shibbo маршрут — это / assets, который содержит статические файлы (css, js, …)

Моя проблема в том, что публичные маршруты и перенаправления на общедоступные (view / public / 12345) перехватываются при входе в систему shibbo. Но маршрут активов нет.

Для меня это выглядит как просьба https://example.com/public/view/1457 переписан https://example.com/index.php?/public/view/1457 и этот маршрут не входит в белый список. Но после входа я перенаправлен на этот URL https://example.com/public/view/1457

.Htaccess

Options -Indexes
DirectoryIndex index.php index.html index.htm

RewriteEngine On

#Removes access to the system folder by users.
#Additionally this will allow you to create a System.php controller,
#previously this would not have been possible.
#'system' can be replaced if you have renamed your system folder.
RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php?/$1 [L]

RewriteCond %{REQUEST_URI} ^application.*
RewriteRule ^(.*)$ /index.php?/$1 [L]

#Checks to see if the user is attempting to access a valid file,
#such as an image or css document, if this isn't true it sends the
#request to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/$1 [L]

Apache vhost conf

<VirtualHost *:443>
ServerName example.com

#legacy redirection
Redirect /view/public/12345 https://example.com/public/view/12345

DocumentRoot /var/www/html
<Directory />
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>

<Location /public>
AuthType shibboleth
ShibRequireSession Off
require shibboleth
</Location>

<Location /assets>
AuthType shibboleth
ShibRequireSession Off
require shibboleth
</Location>

<Location />
AuthType shibboleth
ShibRequireSession On
ShibUseHeaders On
require valid-user
require shibboleth
</Location>
</VirtualHost>

3

Решение

Я думаю, что вы должны использовать

ShibRequestSetting requireSession false

вместо

ShibRequireSession Off

Но это может быть просто версией — я не знаком с Шибболет.

Также может быть полезно узнать, какую версию Apache вы используете. Я спрашиваю, потому что вы используете комбинацию Order/Allow/Deny а также Require, Последний предназначен для Apache 2.4, а первый — для 2.2.

Прошлое, боюсь, я не знаю, как еще помочь.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]