Приложения ТПУ

Здесь представлены основные моменты при работе с приложениями ТПУ, разработанными для цифровизации бизнес процессов. 

Введение

Введение

Знакомство с приложениями ТПУ

Данная книга описывает основные принципы работы с приложениями в единой информационной системе ТПУ (ЕИС ТПУ).

Любой корпоративный пользователь может управлять своим приложением.

Введение

Типы приложений

Приложения ТПУ могут быть классифицированы на следующие категории:

  1. Web-приложение;
  2. Web-сайт;
  3. Десктопное приложение;
  4. Мобильное приложение.
Введение

Доверенные приложения ТПУ

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

Screenshot_19.jpg

К дополнительному функционалу относятся следующие функции:

Установить данный атрибут могут только сотрудники УЦ после проверки приложения

Введение

Платформы приложения

Каждое приложение может иметь несколько реализаций под разные платформах, но только одну реализацию на каждую платформу.

Типы платформ приложений:

  1. Android
  2. iOS
  3. Web
  4. Winphone
  5. Desktop
Введение

Версии приложения

На каждой платформе приложения может быть несколько версий, но только одна может быть активна в рамках каждой платформы.

Версия приложения содержит важные данные для взаимодействия с API.

Публичный ключ вы можете использовать для всех взаимодействий с API (https://api.tpu.ru)

Приватный ключ используется только для расчета контрольной суммы параметров в запросах и должен быть скрыт от посторонних пользователей

Введение

Разработчики приложения

Разработчиками приложения являются пользователи, у которых есть корпоративный логин и пароль в ТПУ. Разработчики могут добавлять других разработчиков, а также менять параметры своего приложения и обращаться к закрытой части документации по API с функцией "Попробовать".

Введение

Личности приложения ТПУ

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

Личности из этого списка могут присутствовать в выходных документах или быть ответственными за выполнение задач в приложении.

Введение

Ключ доступа

Ключ доступа - это публичный SSL ключ, который использует сервер авторизации для расшифровки сообщений, зашифрованные приватным ключом данного приложения.

Публичный ключ добавляет разработчик приложения

Приватный ключ находится в самом приложении и не загружается в систему приложений ТПУ

Создание приложения

Создание приложения

Регистрация нового приложения

Для начала работы надо авторизоваться в приложение API TPU (https://api.tpu.ru)

  1. Перейти на сайт API TPU (https://api.tpu.ru)

  2. Нажать на кнопку вход (см. рисунок) следуя инструкциям авторизации ввести свой корпоративный логин и пароль.

Screenshot_20.jpg

3. После авторизации в боковом меню выбрать раздел "Все приложения"

В списке будут отображаться приложения, где вы являетесь разработчиком. Если кто-то вас добавит к своему приложению - оно отобразиться у вас в боковом меню.

Screenshot_21.jpg

4. В правом верхнем углу нажмите кнопку "Добавить" и заполните все поля, при необходимости можете сразу указать публичный SSL ключ вашего приложения

Screenshot_22.jpg

5. После добавления вашего приложения отправьте заявку на почту support@tpu.ru для подтверждения вашего приложения.

Создание приложения

Добавление платформы приложения

После добавления вашего приложения, требуется добавить платформы и получить API Key для работы с методами API.

Для этого в меню выберите следующие пункты "Настройки" -> "Платформы".

Screenshot_25.jpg

В появившимся окне необходимо выбрать тип платформы приложения и заполнить все поля. Нажать "Сохранить".

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

Screenshot_24.jpg

Создание приложения

Добавлении версии приложения

Следующий шаг - это добавление версии приложения, для того чтобы получить API Key и Private Key для работы с методами https://api.tpu.ru

Выберите пункт "Версии" напротив интересующей вас платформы приложения.

Каждая платформа приложения может иметь несколько разных версий

Screenshot_26.jpg

В модальном окне заполните номер версии приложения, описание и статус. 

Только версия приложения в статусе "Опубликовано" будет работать в API TPU


Screenshot_27.jpg

После добавления версии приложения вы получите два ключа публичный и приватный. Вы их будете использовать при работе с методами API TPU.

Screenshot_28.jpg

Создание приложения

Расчет контрольной суммы

Для некоторых методов требуется указать дополнительный параметр безопасности sig. В интерфейсе вы сможете проверить алгоритм расчета этого параметра на сервере. Разработчику приложения нужно реализовать свой собственный метод для получения данного параметра.

Screenshot_29.jpg

Пример на языке PHP

public function sig(array $arguments, $secret)
{
    ksort($arguments);
    $string = '';

    foreach ($arguments as $key => $value) {
        $string .= "$key=$value";
    }

    return md5($string . $secret);
}

Пример на языке Java

import java.security.MessageDigest;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.security.NoSuchAlgorithmException;

public String sig(Map<String, String> arguments, String secret) throws NoSuchAlgorithmException {
    StringBuilder builder = new StringBuilder();

    List<String> keys = arguments.keySet().stream().sorted().collect(Collectors.toList());

    for(String key : keys) {
        builder.append(key).append("=").append(arguments.get(key));
    }

    builder.append(secret);
    byte[] digest = MessageDigest.getInstance("MD5").digest(builder.toString().getBytes());

    StringBuilder resultBuilder = new StringBuilder();

    for(byte b : digest) {
        resultBuilder.append(String.format("%02x", b));
    }

    return resultBuilder.toString();
}

Пример на языке Scala

import java.security.MessageDigest
import scala.collection.immutable.ListMap

def sig(arguments: Map[String, String], secret: String): String = {
    MessageDigest.getInstance("MD5").digest {
        s"${ListMap(arguments.toSeq.sortBy({ case (key, value) => key }):_*).map({ case (key, value) => s"$key=$value" }).mkString}$secret".getBytes
    }.map(byte => String.format("%02x", byte)).mkString
}

Пример на языке Python

import collections
import hashlib

def sig(arguments, secret):
    ordered = collections.OrderedDict(sorted(arguments.items()))
    concated = "".join(list(map(lambda k,v: k + "=" + v, ordered.keys(), ordered.values()))) + secret
    return hashlib.md5(concated.encode()).hexdigest()

Управление приложением

Управление приложением

Настройки единой авторизации

Для подключение единой авторизации в приложении требуется настроить параметры Oauth2 сервер

Screenshot_30.jpg

Здесь отображаются 

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

Screenshot_33.jpg

Доверенные домены - в этом списка на каждой новой строке указывается перечень доменных имён, с которых разрешено подключение вашего приложения.

Дополнительные параметры Описание
Авторизация включена Основной переключатель - доступна или нет авторизация
Авторизация делегирована конечным пользователям Пользователи могу авторизоваться в системе
Авторизация без использования PKCE Для повышения безопасности можно использовать Proof Key for Code Exchange
Пропускать авторизацию если задана область видимости
Разрешить автономный доступ без согласия Разрешено для только доверенных приложений ТПУ

Настройки области видимости - это список параметров которые сервис единой авторизации сможет предоставить приложению, если пользователь согласиться их передать.

Screenshot_32.jpg

Управление приложением

Способы авторизации и получения доступа

Настройка способов авторизации осуществляется в меню "Типы грантов"

Screenshot_35.jpg

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

Способ авторизации Personal access token доступен только для доверенных приложений ТПУ

Screenshot_34.jpg

Управление приложением

Добавление разработчиков

Для добавления разработчика приложения необходимо в меню выбрать "Настройки" -> "Разработчики"

Screenshot_36.jpg

В списке разработчиков - нажать кнопку "Добавить" и в появившимся окне выбрать роль пользователя в приложении, указать корпоративный логин и мобильный номер телефона.

Screenshot_37.jpg