Автоматический вход в Plesk может быть полезен для целей интеграции: он позволяет клиентам, которые вошли в какую-либо другую систему, получить доступ к Plesk без повторного входа.

Чтобы реализовать автоматический вход, вам необходим интеграционный скрипт, который содержит запрос XML API для создания токена сеанса для одноразового URL-адреса. Этот скрипт будет использоваться для входа пользователей в Plesk по URL-адресу, содержащему одно из двух:

  • (рекомендуется) токен сеанса;
  • (не рекомендуется из соображений безопасности) имя пользователя и пароль.

Автоматический вход в Plesk с помощью токенов сеансов

Чтобы настроить автоматический вход с помощью токенов сеансов:

  1. Добавьте в интеграционный скрипт создание токена сеанса. Для этого отправьте запрос XML API с помощью узла create_session, например:

    <packet version="1.6.9.1">
      <server>
        <create_session>
          <login>admin</login>
          <data>
            <user_ip>192.0.2.1</user_ip>
            <source_server></source_server>
          </data>
        </create_session>
      </server>
    </packet>
    

    Для следующих параметров должны быть заданы ваши значения:

    • login — имя пользователя Plesk, для которого вам нужно создать сеанс.
    • user_ip — IP-адрес пользователя в виде простого текста или в кодировке base64 (например, MTkyLjAuMi4x).
    • (Необязательно) source_server — имя хоста компьютера, с которого отправляется запрос в кодировке base64.

    Примечание: Операция create_session доступна администратору, клиентам и реселлерам Plesk. Администратор Plesk может создавать токены сеансов для себя, реселлеров и клиентов; реселлеры — только для себя и своих клиентов; клиенты — только для себя.

    Вместо отправки запроса XML API напрямую вы можете вставить его в XML-файл и отправить с помощью curl, например:

    curl –kLi -H "Content-Type: text/xml" -H "HTTP_AUTH_LOGIN: admin" -H "HTTP_AUTH_PASSWD: password" -H "HTTP_PRETTY_PRINT: TRUE" -d @request.xml https:<server-hostname-or-ip>/enterprise/control/agent.php
    

    где

    • admin и password— учетные данные администратора Plesk, которые используются для входа на сервер Plesk.
    • request.xml — XML-файл, содержащий запрос XML API, который создает токен сеанса (например, запрос, показанный выше).
    • server-hostname-or-ip — имя хоста или IP-адрес сервера Plesk, для которого вы хотите создать токен сеанса.

    Plesk XML API создаст токен сеанса и отправит его в ответ, например:

    <?xml version="1.0" encoding="UTF-8"?>
    <packet version="1.6.9.1">
      <server>
        <create_session>
          <result>
            <status>ok</status>
            <id>df9d386ee5ef13dbcd583c1f616857a2</id>
          </result>
        </create_session>
      </server>
    </packet>
    

    Тэг``id`` содержит токен сеанса (в нашем примере —df9d386ee5ef13dbcd583c1f616857a2). Скрипт будет использовать этот токен в одноразовом URL-адресе для входа.

  2. Этот скрипт будет перенаправлять браузер пользователя в rsession_init.php, и пользователь будет входить в Plesk. Одноразовый URL-адрес для входа соответствует следующему шаблону:

    https://<server-hostname-or-ip>:8443/enterprise/rsession_init.php?PLESKSESSID=<session_token>&success_redirect_url=<success_redirect_url>&failure_redirect_url=<failure_redirect_url>
    

    где:

    • <server-hostname-or-ip> — имя хоста или IP-адрес сервера, для которого вы создали токен сеанса.
    • <session_token> — созданный токен сеанса.

    Вы также можете указать следующие необязательные параметры:

    • <success_redirect_url> — URL-адрес, по которому браузер будет перенаправлен после успешного входа.
    • <failure_redirect_url> — URL-адрес, по которому браузер будет перенаправлен после истечения срока действия сеанса Plesk или после выхода пользователя.
    • <locale_id> — имя локали, которая будет использоваться при входе (например, de-DE).

    URL-адрес для входа может выглядеть следующим образом:

    https://192.0.2.1:8443/enterprise/rsession_init.php?PLESKSESSID=df9d386ee5ef13dbcd583c1f616857a2&success_redirect_url=/admin/customer/list
    

    Примечание: Мы рекомендуем вам использовать в параметрах success_redirect_url и failure_redirect_url относительные URL-адреса (они начинаются с /), например: /admin/customer/list. Для перенаправления имен хоста, отличных от Plesk, необходимо использовать абсолютные URL-адреса (например, example.com) как в этих параметрах, так и настройке trustedRedirectHosts в файле panel.ini (смотрите следующий шаг).

  3. Если вы настраиваете автоматический вход в Plesk с параметрами success_redirect_url и/или failure_redirect_url с перенаправлением на имена хоста, отличные от Plesk и имеющие абсолютные URL-адреса, защитите свой сервер Plesk от открытого перенаправления. Для этого добавьте в файл panel.ini следующую запись:

    [security]
    trustedRedirectHosts = hostname1,hostname2
    

    Здесь hostname1 и hostname2 — доверенные имена хоста, на которые вы разрешаете перенаправление по URL с помощью параметров success_redirect_url и failure_redirect_url.

    Узнайте больше о защите Plesk от открытого перенаправления.

Автоматический вход в Plesk с помощью учетных данных

Вы также можете настроить автоматический вход без создания токена сеанса, передав имя и пароль пользователя как параметры URL-адреса. Из соображений безопасности мы не рекомендуем вам использовать этот способ.

Если вы все-таки хотите его использовать, URL-адрес для входа будет соответствовать следующему шаблону:

https://<server-hostname-or-ip>:8443/login_up.php3?login_name=<login>&passwd=<password>&success_redirect_url=<success_redirect_url>&failure_redirect_url=<failure_redirect_url>

где

  • <server-hostname-or-ip> — имя хоста или IP-адрес сервера, для которого вы создали токен сеанса.
  • <login> и <password>— имя пользователя и пароль соответственно.

Вы также можете указать следующие необязательные параметры:

  • <success_redirect_url> — URL-адрес, по которому браузер будет перенаправлен после успешного входа.
  • <failure_redirect_url> — URL-адрес, по которому браузер будет перенаправлен после истечения срока действия сеанса Plesk или после выхода пользователя.
  • <locale_id> — имя локали, которая будет использоваться при входе (например, de-DE).