Авторизация 1С на сайте PHP_AUTH_USER на CentOS apache / ~#root -i
  • Unix-подобные ОС
  • Php
  • MySQL
  • JavaScript
  • Менеджеры пакетов
  • Docker
  • Seo
  • Вход
  • Регистрация
  • Главная
  • Php
  • Авторизация 1С на сайте PHP_AUTH_USER на CentOS apache

Авторизация 1С на сайте PHP_AUTH_USER на CentOS apache

При синхронизации 1с с сайтом, для выгрузки какой либо информации, следует прибегнуть к авторизации. Чтобы не накидали на сайт разного ненужного мусора (в лучшем случае).

Так вот, начитавшись литературы, понял что 1с обменивается хедерами с сайтом и прописывает ему PHP_AUTH_USER и PHP_AUTH_PW. Но в моем случае не получилось их словить в  $_SERVER (возможно какие-то настройки в 1с не проставил).

Изначально планировалось словить данные после авторизации так:

<?php
$dbSeq = ['user' => 'test', 'pass' => 'test'];
$this->login = isset($_SERVER['PHP_AUTH_USER']) ? trim($_SERVER['PHP_AUTH_USER']) : null;
$this->password = isset($_SERVER['PHP_AUTH_PW']) ? trim($_SERVER['PHP_AUTH_PW']) : null;

if ($this->password == $dbSeq['pass'] && $this->login == $dbSeq['user']) {
    return true;
}

Но 1с не отдавала ничего или сервер не мог принять эти данные (не смог найти причину).

1с авторизация

Моим решением стало пeренаправить HTTP:Authorization. Я использовал mod_rewrite на apache.

Обязательно в .htaccess должна быть строка:

RewriteEngine on

которая включает работу механизма преобразования в mod_rewrite.

В .htaccess после всех правил RewriteRule было добалвенно:

RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization},L]

REMOTE_USER - указывает что {HTTP:Authorization} будет писаться в $_SERVER['REDIRECT_REMOTE_USER'].

Данные прилетели в base64.

var_dump($_SERVER['REDIRECT_REMOTE_USER']);

["REDIRECT_REMOTE_USER"]=>
  string(18) "Basic dGVzdDp0ZXN0"

Сделал с ними нехитрую манипуляцию:

<?php
$dbSeq = ['user' => 'test', 'pass' => 'test'];

if ($_SERVER["REDIRECT_REMOTE_USER"]) {
    $info = base64_decode(end(explode(' ',$_SERVER["REDIRECT_REMOTE_USER"])));
    $info = explode(':', $info);
    $this->login = $info[0]; // Прилетело test логин
    $this->password = $info[1]; // Прилетело test пароль
}

if ($this->password == $dbSeq['pass'] && $this->login == $dbSeq['user']) {
    return true;
}

root-i
14 Июня 18
442
0
Теги
CentOS 1С
Поделиться

Комментарии

Имя
Электронная почта
Рейтинг
Отзыв
Rootcms интернет-магазин

Теги

Ubuntu 14.04 (14) Софт (9) Gearman (3) Сервисы (2) Framework (1) MVC (1) Php 5.6 (14) Cli (2) Propel (3) ORM (3) JavaScript (4) Css (1) Composer (4) Docker (3) Seo (4) MySQL (5) docker-compose (2) CentOS (1) 1С (1) Memcache (1) Memcached (1) Php 7 (4) Анализ (2) Ubuntu 18.04 (9) MySQL 5.7 (4) Генерация (2) Bower (1) Npm (1) NodeJs (3) Gulp (1) ImageCMS (2) Базы (1) JQuery (1) Сниппет (1)

Последние комментарии

Игорь, скорее всего так определяет сам sourcebuste...
root-i
16.12.20
Не могу разобраться почему скрипт определяет перех...
Игорь
16.12.20
Четко. Пришлось грохнуть папку node_modules...
Khludev
09.12.20
Кому нужна с картинками и артикулами обращайтесь i...
Артём
19.10.20

Делюсь информацией в которой я требовал помощи и разбираясь затрачивал много времени. Если мои знания помогли хотя бы одному человеку, значит этот сайт создан не зря.

Благодарность: $
Контакты

Обратная связь

Поиск по сайту

  • Вход
  • Регистрация

Сайт работает на chmod -R