|
|
|
Получение переменной сервера от Apache
|
|||
|---|---|---|---|
|
#18+
Существует связка Apache + Trusted TLS + CSP 3.6/3.6 R2 + Oracle WebLogic Server 10.3.2. То есть точка входа в apex-приложение через апач, существует два вида входа, обычный пользователь со стандартным сертификатом и пользователь имеющий токен-ключ. В apex-приложении мне надо понять как пользователь добрался до него через обычный сертификат или через ключ. Апач может отправлять серверные переменные, которые может обработать вэб-приложение. Вопрос: как эти переменные считать в апекс? Спасибо PS: Вот вырезка из доки по Trusted TLS: Использование переменных сервера для аутентификации в веб-приложении Модуль mod_digt_tls аналогично mod_ssl формирует переменные веб-сервера. Дополнительно к набору стандартного модуля в нем поддерживается переменная SSL_CLIENT_EKU, описание которой приводится в пункте «5. SSLRequire» раздела «Организация двусторонней аутентификации». Переменные сервера удобно использовать для обеспечения аутентификации пользователя в веб-приложении по сертификату дополнительно к аутентификации по логину и паролю. Для этого необходимо на веб-сервере включить возможность (SSLVerifyClient optional) или требование (SSLVerifyClient require) установления двухсторонней аутентификации, а также добавить в веб-приложение определение соответствия между пользователем и его сертификатами. Наиболее простой способ – это помещать логин пользователя в одно из полей имени владельца сертификата аутентификации, а наиболее гибкий – хранить сертификаты или только уникальную информацию (имя издателя + серийный номер) из них в таблице веб-системы с привязкой к учетным записям пользователей. Если Trusted TLS используется на отдельном от веб-приложения сервере, то на нем необходимо настроить передачу переменных сервера, например, с использованием директивы RequestHeader модуля mod_headers. Пример частичной конфигурации виртуального хоста: ProxyPass / http://backend.some-portal.local/ ProxyPassReverse / http://backend.some-portal.local/ RequestHeader add Forwarded-Ssl-Client-I-Dn "%{SSL_CLIENT_I_DN}s" RequestHeader add Forwarded-Ssl-Client-M-Serial "%{SSL_CLIENT_M_SERIAL}s" RequestHeader add Forwarded-Ssl-Client-S-Dn "%{SSL_CLIENT_S_DN}s" Название заголовков запроса должно удовлетворять RFC 822, п.3.1 (для HTTP/1.1 – RFC 2616, 4.2). В данном примере пересылаемым переменным с целью отделения от локальных добавляется префикс «FORWARDED_». А доступ к ним должен производиться с префиксом «HTTP_FORWARDED_», например, «HTTP_FORWARDED_SSL_CLIENT_I_DN». Пример обращения к переменным сервера из PHP: <?php function WriteServerVariable($sVarName) { echo $sVarName . " = '" . $_SERVER[$sVarName] . "'<br>"; } WriteServerVariable("SSL_CLIENT_I_DN"); WriteServerVariable("SSL_CLIENT_M_SERIAL"); WriteServerVariable("SSL_CLIENT_S_DN"); WriteServerVariable("HTTP_FORWARDED_SSL_CLIENT_I_DN"); WriteServerVariable("HTTP_FORWARDED_SSL_CLIENT_M_SERIAL"); WriteServerVariable("HTTP_FORWARDED_SSL_CLIENT_S_DN"); ?> Пример обращения к переменным сервера из ASP: <% sub WriteServerVariable(ByVal sVarName) Response.Write sVarName & " = '" & Request.ServerVariables(sVarName) & "'" Response.Write "<br>" end sub WriteServerVariable("CERT_ISSUER") WriteServerVariable("CERT_SERIALNUMBER") WriteServerVariable("CERT_SUBJECT") WriteServerVariable("HTTP_FORWARDED_SSL_CLIENT_I_DN") WriteServerVariable("HTTP_FORWARDED_SSL_CLIENT_M_SERIAL") WriteServerVariable("HTTP_FORWARDED_SSL_CLIENT_S_DN") %> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2013, 11:44 |
|
||
|
Получение переменной сервера от Apache
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2013, 13:14 |
|
||
|
Получение переменной сервера от Apache
|
|||
|---|---|---|---|
|
#18+
Спасибо это оно и есть(или должно быть - надо проверять на практике). Код: plsql 1. PS: Сегодня мне как раз аж приснился ответ на этот мой же вопрос ввиде пакета owa_util ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2013, 14:01 |
|
||
|
Получение переменной сервера от Apache
|
|||
|---|---|---|---|
|
#18+
чтобы эти переменные прочитать нужно их заэкспортить в конфигурации дада типа так: Код: xml 1. 2. 3. 4. 5. 6. после этого пользуйтесь owa_util.get_cgi_env, иначе будет пустота.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2013, 19:25 |
|
||
|
Получение переменной сервера от Apache
|
|||
|---|---|---|---|
|
#18+
Трудяга Биггер, Это на уровне апача. Так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2013, 11:15 |
|
||
|
Получение переменной сервера от Apache
|
|||
|---|---|---|---|
|
#18+
kasik, ну да, в dads.conf впишите туда нужные Вам переменные, и пробуйте. "SSL_CLIENT_S_DN" и "SSL_CLIENT_CERT" - это я для примера указал. это я так получаю distinguished name (SSL_CLIENT_S_DN) и base-64 кодированный сертификат (SSL_CLIENT_CERT) при ssl-авторизации ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2013, 18:06 |
|
||
|
|

start [/forum/topic.php?fid=50&msg=38418628&tid=1875535]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
17ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
29ms |
get tp. blocked users: |
1ms |
| others: | 249ms |
| total: | 326ms |

| 0 / 0 |
