По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Ранее мы рассказывали, как подключить нового абонента к OpenScape Voice с использованием веб-портала Common Management Portal. В этой статье мы расскажем, как включить и настроить дополнительные функции для абонента, такие как перехват вызова, различные виды переадресации, обратный вызов и другие. /p> Большая часть функций активируются при помощи специальных сервисных кодов, для которых нужно задать специальный префикс (Prefix Access Code). Изначально у абонентов нет возможности пользоваться дополнительными функциями и их можно включать либо по отдельности для каждого абонента, либо для группы абонентов, используя профиль дополнительных функций (Feature Profile). Создание профиля дополнительных функций Для этого необходимо перейти в раздел Configuration → Openscape Voice → Business Group → Profiles → Feature и нажать на кнопку Add для создания нового профиля. В открывшемся окне во вкладке General в поле Name вписываем название нашего профиля. Для того чтобы данный профиль автоматически назначался при создании нового абонента можно поставить галочку в пункте Default. Переходим на вкладку Features и в пункте Feature Name в выпадающем списке выбираем функцию, которую хотим добавить и нажимаем Add. После этого выбранная функция переходит в нижнюю часть окна. Затем нажимаем Save для сохранения профиля. Включение дополнительных функций у абонента Зайдем в настройки номера в разделе Configuration → Openscape Voice → Business Group - Members - Subscribers выбрав его в списке. Во вкладке Features, в пункте Feature Profile выбираем созданный профиль, либо можно выбрать необходимые функции из списка в поле Feature Name и добавить их, нажав кнопку Add. Активация дополнительных функций Как говорилось ранее, большая часть дополнительных функций активируется при помощи заданных сервисных кодов, которые передаются с телефона в систему при помощи протокола CSTA (Computer Supported Telecommunications Applications). Для того чтобы включить поддержку этого протокола нам необходимо вернуться в раздел Configuration → Openscape Voice → Business Group → Profiles → Feature , выбрать созданный профиль, и во вкладке Features добавить функцию CSTA Access . После того как она появится в списке внизу нужно нажать на нее, и войдя в настройку параметров функции выбрать значение CSTA Over SIP и сохранить при помощи кнопки Save. Включение CSTA на телефоне Заходим на веб-интерфейс телефона и переходим в раздел Administrator → System → Features - Configuration. Там нам нужно поставить галочку в пункте Allow uaCSTA (Включает протокол CSTA) и в пункте Server Features (Позволяет использовать дополнительные функции), после чего нажать Submit. После этого система готова к настройке дополнительных функций, которые активируются при помощи сервисных кодов. Это такие функции как использование группы перехвата вызова, переадресация звонков, создание конференции и другие. О том, как создать и настроить их мы поговорим в следующей статье.
img
Привет! Недавно мы рассказывали про то, как развернуть VoIP лабораторию используя Cisco Packet Tracer. Сегодня мы покажем, как настроить протокол маршрутизации OSPF (Open Shortest Path First) в Packet Tracer. Про сам протокол OSPF можно почтить тут. Создадим такую схему – два маршрутизатора, соединенные друг с другом посредством серийного интерфейса, к каждому подключено по коммутатору, а уже к ним подключаются компьютеры. Видео: протокол OSPF (Open Shortest Path First) за 8 минут Настройка сети Начнем с настройки интерфейсов на роутере. Сначала настроим интерфейс FastEthernet 0/0, который смотрит в сторону коммутатора. Используем команду int fa 0/0 для входа в режим конфигурации интерфейса, ip address [ip_адрес][маска] для того чтобы назначить ему IP адрес, и команду no shutdown для того чтобы включить интерфейс. После этого мы увидим сообщение что интерфейс и протокол теперь находятся в состоянии UP. en conf t int fa 0/0 ip address 192.168.1.10 255.255.255.0 no sh Затем настроим интерфейс Serial 2/0. Тут все тоже самое, но поскольку это интерфейс serial, то мы еще выполняем команду clock rate, чтобы задать скорость в 64000 бита в секунду. Эту команду мы должны выполнить на маршрутизаторе, который является DCE (Data Communication Equipment). Это зависит от того, каким концом подключен serial кабель, так как он не симметричный. Чтобы посмотреть, какая роль у данного порта нужно использовать команду show controllers [интерфейс] , где мы увидим, является он DCE или DTE. en conf t int serial 2/0 ip address 192.168.2.1 255.255.255.0 clock rate 64000 no sh exit Аналогичные настройки проведем для другого маршрутизатора, за исключением того, что он является DTE (Data Terminal Equipment) и использовать команду clock rate не нужно. После этого все интерфейсы должны находиться в состоянии UP и стать зелеными. Теперь присвоим IP адреса компьютерам. Для этого дважды кликнем иконку компьютера, перейдем во вкладку Desktop и нажмем на IP Configuration. В открывшемся окне выбираем опцию static в блоке IP Configuration и задаем необходимый IP адрес, маску и шлюз, в соответствии с нашей схемой. То же самое проделываем и для остальных ПК. После этого можно проверить доступность, используя команду Ping, зайдя на ПК во вкладку Desktop – Command Prompt. Как видно на скриншоте у нас есть доступ до шлюза, который находится в нашей подсети 192.168.1.0/24, есть доступ до интерфейса роутера, находящегося в подсети 192.168.2.0/24, потому что он находится на роутере и поэтому попадает в таблицу маршрутизации, но при этом до другого адреса в этой подсети доступа у нас нет. И у нас нет доступа до подсети 192.168.3.0/24. На данный момент таблица маршрузиации левого роутера выглядит вот так Чтобы это исправить и получить доступ до подсети 192.168.3.0/24 настроим протокол маршрутизации OSPF. Настройка OSFP Запускаем процесс OSPF на первом маршрутизаторе. Для этого используем команду router OSPF [номер процесса] для запуска протокола, и команду network [ip_адрес_сети][wildcard_маска][зона] , в которой мы указываем все подстети, для которых будет работать OSPF. Посчитать обратную (wildcard) маску можно на нашем калькуляторе подсетей. Просто введите обычный адрес и обычную маску, а калькулятор покажет вам wildcard :) en conf t router ospf 1 network 192.168.1.0 0.0.255 area 0 network 192.168.2.0 0.0.255 area 0 network 192.168.3.0 0.0.255 area 0 exit То же самое проделываем на втором маршрутизаторе. Номер зоны должен быть таким же, как и на первом роутере. Как видно на скриншоте, процесс OSPF уже сразу заработал. Теперь можно проверить таблицу маршрутиазции. Как мы видим, теперь все сети появились в таблице маршрутизации. Теперь снова проверим сетевую доступность между подсетями 192.168.1.0/24 и 192.168.3.0/24, используя утилиту Ping. Все пингуется, а это значит, что мы успешно настроили протокол OSPF!
img
Стандарт JSON Web Tokens (JWT) – это лаконичный метод передачи данных, поддающихся проверке. Каждый токен содержит подпись, с помощью которой эмитент может проверить целостность сообщения. С помощью этой статьи вы можете узнать, что из себя представляет структура JWT и как можно создать свои собственные токены. JWT – это популярный способ защиты API и аутентификации сеансов пользователей, так как они достаточно просты и являются автономными.  Как работают JWT? Одна из самых распространенных задач в любом API – это проверка того факта, что пользователи являются теми, за кого себя выдают. Как правило, аутентификация выполняется тогда, когда клиент использует ключ API для запросов, которые он отправляет на сервер. Этот ключ содержит информацию, которая подтверждает личность пользователя. Но все еще остается вопрос: как сервер проверяет, что пользователь сначала предоставил ключ? JWT с легкостью решают эту проблему с помощью секретного ключа, который используется для подписи каждого токена. Сервер проверяет действительность токена, повторно пересчитывая подпись с помощью своего секретного ключа. Любое несанкционированное вмешательство приведет к тому, что проверка не будет выполнена.  Структура JWT JWT состоят из трех отдельных компонентов: Заголовок (header) – содержит метаданные о токене, например, алгоритм подписи, который был использован. Полезная нагрузка (payload) – в качестве полезной нагрузки могут выступать любые случайные данные, которые так или иначе относятся к вашей системе. Полезная нагрузка может содержать ID пользователя и набор определенных функций, с которыми пользователь может взаимодействовать.  Подпись (signature) – подпись позволяет в дальнейшем проверить целостность токена. Подпись создается путем подписания заголовка и полезной нагрузки с помощью секретного ключа, который знает только сервер.  Для того, чтобы сформировать JWT, все эти три компонента нужно записать через точку: header.payload.signature Каждый компонент кодируется с помощью стандарта Base-64. Готовый токен представляет собой строку текста, которую можно использовать в средах разработки программ и отправлять вместе с HTTP-запросами.  Создание JWT Создать JWT можно на любом языке программирования. В данном случае мы будем использовать PHP, но вы можете использовать и другой язык, процесс будет аналогичным.  Начнем с создания заголовка. Как правило, он включает в себя два поля –  alg и  typ : alg – это алгоритм хеширования, который мы будем использовать для создания подписи. Как правило, используют HMAC SHA256 ( HS256 ). typ – это тип токена, который мы создаем. Здесь мы должны указать  JWT . Вот так выглядит объект JSON, который определяет заголовок: {    "alg": "HS256",    "typ": "JWT" } Заголовок необходимо закодировать с помощью Base-64: $headerData = ["alg" => "HS256", "typ" => "JWT"]; $header = base64_encode(json_encode($headerData)); Затем нам необходимо определить еще один объект JSON - полезную нагрузку токена. Что из себя будет представлять полезная нагрузка зависит от приложения. В данном примере мы используем информацию об учетной записи аутентифицированного пользователя и информацию о самом токене.  exp ,  iat и  nbf – это условные поля, которые используются для того, чтобы указать время истечения срока действия токена, время его создания и момент времени (начальный), до которого он считается недействительным. Полезную нагрузку также необходимо закодировать с помощью Base-64. $payloadData = [    "userId" => 1001,    "userName" => "demo",    "licensedFeatures" => ["todos", "calendar", "invoicing"],    "exp" => (time() + 900),    "iat" => time(),    "nbf" => time() ]; $payload = base64_encode(json_encode($payloadData)); Нам остается только создать подпись. Для этого сначала нужно объединить заголовок и полезную нагрузку в одну сроку, разделив их точкой: $headerAndPayload = "$header.$payload"; Затем мы должны сгенерировать уникальный секретный ключ, который мы будем использовать в качестве секретного ключа подписи. Этот ключ должен надежно храниться на вашем сервере, и его ни в коем случае нельзя передавать клиентам. Если значение секретного ключа будет раскрыто, то любой пользователь сможет создавать действительные токены.  // PHP method to generate 32 random characters $secret = bin2hex(openssl_random_pseudo_bytes(16)); И мы завершаем процесс с помощью подписи объединенной строки (заголовка и полезной нагрузки) с помощью секретного ключа. Для этого мы будем использовать алгоритм хеширования, который мы указали в заголовке. Получившаяся подпись также, как и другие компоненты, должна быть закодирована с помощью Base-64.  $signature = base64_encode(hash_hmac("sha256", $headerAndPayload, $secret, true)); Итак, у нас теперь есть заголовок, полезная нагрузка и подпись. Они представляют собой отдельные текстовые компоненты. Для того, чтобы создать JWT, мы должны объединить из с помощью точки. И теперь мы можем отправить его клиенту: $jwt = "$header.$payload.$signature"; Проверка входящих JWT Клиентское приложение может определить, какие функции доступны пользователю, если расшифрует полезную нагрузку токена. Вот пример, написанный на JavaScript: const tokenComponents = jwt.split("."); const payload = token[1]; const payloadDecoded = JSON.parse(atob(payload)); // ["todos", "calendar", "invoicing"] console.log(payloadDecoded.licensedFeatures); Злоумышленник может подумать, что эти данные представляют собой простой текст и его легко изменить. Он может попробовать убедить сервер в том, что у него есть некая дополнительная доступная ему функция, изменив полезную нагрузку токена в своем запросе: // Create a new payload component const modifiedPayload = btoa(JSON.stringify({    ...payloadDecoded,    licensedFeatures: ["todos", "calendar", "invoicing", "extraPremiumFeature"] })); // Stitch the JWT back together with the original header and signature const newJwt = `${token[0]}.${modifiedPayload}.${token[2]}` Как же сервер защищается от подобных атак? Ответ заключается в процессе создания подписи. Значение подписи учитывает, как заголовок токена, так и его полезную нагрузку. В случае данного примера изменение полезной нагрузки ведет к тому, что подпись становится недействительной.  Серверная программа проверяет входящие JWT путем пересчета их подписей. Если подпись, отправленная клиентом, не совпадает с подписью, посчитанной на сервере, то можно сделать вывод о том, что токен был подделан.  $tamperedToken = $_POST["apiKey"]; list($header, $payload, $signature) = $tamperedToken; // Determine the signature this token *should* have // when the server's secret is used as the key $expectedSignature = hash_hmac("sha256", "$header.$payload", $secret, true); // The token has been tampered with because its // signature is incorrect for the data it includes if ($signature !== $expectedSignature) {    http_response_code(403); } // The signatures match - we generated this // token and can safely trust its data else {    $user = fetchUserById($payload["userId"]); } Злоумышленник не может создать действительный токен, если он не знает секретный ключ, который хранится на сервере. Также это означает, что случайная утеря или преднамеренная передача секретного ключа сразу же делает все ранее созданные токены недействительными.  В реальной ситуации ваш код аутентификации должен проверять срок действия токена, а также должен убедиться, что он уже является действительным ( nbf в полезной нагрузке). Это все необходимо для того, чтобы определить, является ли сеанс пользователя действительным. Когда нужно использовать JWT JWT, как правило используют для аутентификации API, поскольку их достаточно просто реализовать на сервере, легко использовать на клиентской стороне и просто передавать через границы сети. Но несмотря на то, что они такие простые, они обеспечивают хороший уровень безопасности за счет того, что каждый токен подписывается с помощью секретного ключа, который хранится на сервере.  JWT – это механизм, который не фиксирует текущее состояние, поэтому нет необходимости фиксировать информацию о созданных токенах на вашем сервере. Информацию о клиенте, который предоставляет вам JWT, вы можете получить из полезной нагрузки, а не искать ее в базе данных. После того, как подпись будет проверена, эта информация будет считаться достоверной.  Если вам необходимо обмениваться информацией между двумя сторонами без какого-либо постороннего вмешательства, то использование JWT – это отличный вариант. Однако у этого механизма есть слабые места, о которых следует знать заранее. В случае, если произойдет утечка секретного ключа или если ваш код проверки подписи содержит ошибку, то будет скомпрометирована вся система. Именно поэтому для реализации процесса создания и проверки JWT многие разработчики используют библиотеку с открытым исходным кодом. Функции доступны для всех популярных языков программирования, и они исключают риск ошибок при проверке токена.   Заключение Стандарт JWT – это формат обмена данными, который включает в себя проверку целостности. Как правило, JWT используют для защиты взаимодействия между серверами API и клиентскими приложениями. Сервер может доверять входящим токенам, если у него получается воспроизвести их подписи. С помощью информации, полученной из полезной нагрузки, можно обеспечить безопасность при выполнении каких-либо действий  JWT достаточно удобны, но при этом имеют некоторые недостатки. Текстовое представление JWT в кодировке Base-64 может быть слишком объемным, если в полезной нагрузке будет слишком много полей. Это будет недопустимым потреблением ресурсов, если ваш клиент собирается отправлять JWT с каждым запросом.  Еще одним возможным недостатком может оказаться то, что JWT не фиксирует текущее состояние. После того, как токен был создан, он является неизменяемым и должен использоваться как есть до истечения своего срока действия. Клиенты, которые используют полезные данные JWT для определения прав доступа пользователя или для использования лицензированных функций, должны будут получать новый токен с сервера каждый раз, когда что-то из этого меняется. 
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59