Xsolla Documentation – Сквозная аутентификация

Что такое 2-х контурная система и как она работает

Программа «Вектор» находится на своей платформе, доступ к которой имеет часть сотрудников. Одновременно с этим в компании используется учебный портал на платформе Websoft HCM (WebTutor). Основная задача состояла в том, чтобы интегрировать учебный портал с системой «Вектор» в части прохождения электронных курсов.

Суть 2-х контурной системы состоит в том, что устанавливаются два сервера системы: 

  • Первый во внутреннем контуре: в нем содержатся полные данные по сотрудникам и организационной структуре, к серверу нет доступа из сети Интернет. 
  • Второй сервер – внешний контур, он доступен извне, и пользователи работают на портале именно внешнего контура. На этот сервер данные с помощью репликации передаются в обезличенном виде, то есть только определенные ID сотрудников. Персональные данные, e-mail, должности, подразделению сотрудника и т.д. не передаются и не хранятся на внешнем сервера. 

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

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

Что такое программа «вектор» от академии ростеха

Программа «Вектор» ‒ это гибкая экосистема развития инноваций. Программа стартовала в августе 2022 года. Она направлена на повышение квалификации сотрудников предприятий ОПК в области создания и развития технологической продукции гражданского назначения. Программа объединила знания и опыт лучших экспертов отрасли, передовые российские и зарубежные практики.

Похожее:  Реализация аутентификации в telegram-боте через OAuth2 на примере Box API

За два года заявки на участие в «Векторе» подали 7300 сотрудников Ростеха. Пять проектов-победителей первого набора вошли в бизнес-акселератор Ростеха и получили финансирование на реализацию своих проектов в готовый продукт.

1 Словесное описание решаемой задачи

Компания ОАО «ПьемЧай» ежедневно требует работы от миллиона сотрудников и сотни тысяч гостей. Все сотрудники пьют чай и в этом состоит их работа. В компании есть гости, которые пить чай не могут, для них доступны опции, которые позволяют им видеть какой чай они смогут пить на своей будущей работе, а так же лучших сотрудников года, месяца и недели.

Некоторые сотрудники в пандемию работают удаленно и доступ к чаю им предоставляет курьерская служба Кракен, прямо к точке доставки. Удаленные сотрудники могут получать чай только из той точки доставки, к которой они привязаны. Находясь в офисе они все равно могут пить чай как обычные сотрудники.

1 немного теории

Основной задачей авторизации доступа является разграничение доступа к целевому объекту на основании данных о субъекте, запрашивающем доступ, и свойствах объекта.

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

Требования к системе авторизации


При проектировании расширения я руководствовался следующими принципами:

  1. Необходимость абстрагироваться от тонкостей авторизации через различные типы сервисов, использование адаптеров для каждого сервиса.
  2. Получение уникального идентификатора авторизации, который можно использовать для регистрации пользователя в нашем приложении.
  3. Возможность расширения стандартных классов авторизации для получения дополнительных данных о пользователе.
  4. Возможность работать с API социальных сетей путем расширения класса авторизации необходимого сервиса.
  5. Возможность настраивать список поддерживаемых сайтом сервисов, переопределять внешний вид виджета авторизации. Возможность использовать popup окно для авторизации без закрытия нашего приложения.

1 Время восстановления/энтропия входных параметров

Авторизация принимает решение о разграничении доступа на основе множества входных параметров. Если таковых будет слишком много, либо мерность множеств окажется слишком большой, то авторизация будет терять слишком много ресурсов на выполнение ненужных операций. Это как сортировать данные пузырьком и qsort. Не следует выполнять ненужные операции.

Если у вашей системы есть на входе A,B,C,D,E,F — факты о пользователе, то если вы будете объединять все в одно, то получите A * B * C * D * E * F комбинаций, которые невозможно эффективно кешировать. По возможности следует найти такую комбинацию входных, что бы у вас было A * B * C и D * E * F комбинаций, а еще лучше A * B, C * D, E * F, которые вы уже легко сможете вычислять и кешировать.

Эта характеристика очень важна так же для построения системы правил, которые будут предоставлять пользователям доступы.

2 Детализация авторизации

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

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

2 обобщенная модель данных

Прежде чем проектировать, необходимо договориться о терминах и структурах данных с их взаимосвязями.

Xsolla Documentation - Сквозная аутентификация

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


Детально опишем все имеющиеся определения с которыми будем дальше работать.

Расширение EAuth

В результате реализации всех требований выше на свет появилось расширение EAuth.

На данный момент расширение содержит:

1 Пользователь

Субъект, чей доступ необходимо авторизовать.


Данное определение задает субъекты, которые могут быть как людьми, так и автоматическими системами, которые получают доступ к вашим ресурсам. У любого пользователя могут быть свои роли, разрешения и группы.

10 О кешировании данных

Основной проблемой при работе авторизации является точка в которой необходимо кешировать результаты, что бы работало быстрее все, да еще желательно так, что бы нагрузка на ЦПУ не была высокой. Вы можете поместить все ваши данные в память и спокойно их читать, но это дорогое решение и не все готовы будут себе его позволить, особенно если требуется всего лишь пара ТБ ОЗУ.

Правильным решением было бы найти такие места, которые бы позволяли с минимальными затратами по памяти давать максимум быстродействия.

Предлагаю решить такую задачу на примере ролей пользователя и некоего микросервиса, которому нужно проверять наличие роли у пользователя. Разумеется в данном случае можно сделать карту (Пользователь, Роль) -> Boolean. Проблема в том, что все равно придется на каждую пару делать запрос на удаленный сервис.

Даже если вам данные будут предоставлять за 0,1 мс, то ваш код будет работать все равно медленно. Очевидным решением будет кешировать сразу роли пользователя! В итоге у нас будет кеш Пользователь -> Роль[]. При таком подходе на какое-то время микросервис сможет обрабатывать запросы от пользователя без необходимости нагружать другие микросервисы.

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

Полагаю, что ход мыслей, которому стоит следовать, стал понятен.

2 Сервис

Множество ресурсов объединенных в единое целое, как пример сервис проектов.


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

3 Ресурс

Единичный объем информации для работы авторизации, например проект.

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

4 Разрешение

Право пользователя выполнять операцию над сервисом и/или ресурсом.

5 Роль


Множество разрешений, по сути под словом роль всегда подразумевается множество разрешений.

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

Ролевые модели позволяют как выполнять вертикальное, так и горизонтальное разграничение доступа (описание ниже). Из типа разграничения доступа следует, что сами роли делятся на типы:

Но отсюда следует вопрос, если у пользователя есть глобальная роль и локальная, то как определить его эффективные разрешения? Поэтому авторизация должна быть в виде одной из форм:


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

Роль имеет следующие связи:

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

6 Группа

Используя группы можно объединить множество ресурсов, в том числе расположенных в разных сервисах в одно целое, и управлять доступом к ним используя одну точку. Это позволяет гораздо проще и быстрее реализовывать предоставление доступа пользователя к большим массивам информации, не требуя избыточных данных в виде записи на каждый доступ к каждому ресурсу по отдельности вручную или автоматически. По сути вы решаете задачу предоставления доступа к N ресурсам создавая 1 запись.

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

Группа имеет следующие связи:

7 Вертикальное и горизонтальное разграничение доступа.

Самым простым способом представить себе работу авторизации — это нарисовать таблицы на каждого пользователя и каждый сервис, где колонки будут задавать разрешения, а строки — ресурсы, на пересечении ставятся галочки там, где доступ разрешен (привет excel-warrior’ам).

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

8 Глобальность/локальность авторизации доступа в микросервисах

Несмотря на то, что все роли могут хранится в единой БД, то вот связи между ними и пользователями хранить все вместе на всю вашу огромную систему — это типичный антипаттерн, делать так является грубейшей ошибкой, это все равно что POSIX права на файлы хранить в облачном сервисе, вместе с таблицей inode.

9 Конъюнктивная/дизъюнктивная форма авторизации

Из-за того, что у теперь у нас существуют два варианта наборов разрешений пользователя, то можно выделить два варианта, как объединить все вместе:

Одним из важных преимуществ конъюнктивной формы является жесткий контроль за всеми операциями, которые может выполнять пользователь, а именно — без глобального разрешения пользователь не сможет получить доступ в следствие ошибки на месте. Так же реализация в виде программного продукта горазо проще, так как достаточно сделать последовательность проверок, каждая из которых либо успешна, либо бросает исключение.

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

Рекомендуется всегда использовать только конъюнктивную форму авторизации в виду ее большей гибкости и возможности снизить вероятность появления инцидентов по утечке данных. Так же именно конъюнктивная форма авторизации имеет большую устойчивость к ДДОС атакам в виду использования меньшего объема ресурсов.

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

3 как использовать обобщенную модель данных

Теперь, определившись с терминами, можно разобрать несколько задачек, для того, что бы видеть как на практике применить материал.

Установка

Для начала необходимо

1 Зависимости

Расширение использует

1 Закрытый онлайн аукцион


Организатор может создать аукцион, пригласить участников. Участник может принять приглашение, сделать ставку.

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

2 Логистика

Огромная логистическая компания требует разграничить доступы для супервизоров и продавцов да еще с учетом региона. Работа такова, что продавец может выставить заявку на получение товара, а супервизор уже решает кому и сколько достанется. Соответственно продавец может видеть свой магазин и все товары в нем, а так же созданные им заявки, статус их обработки.

Для реализации такого функционала нам потребуется реестр регионов и магазинов в качестве отдельного микросервиса, назовем его С1. Заявки и историю будем хранить на С2. Авторизация — А.Далее при обращении продавца для получения списка его магазинов (а у него может быть их несколько)

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

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

2 Настройка

В конфигурацию

`main.php`

необходимо добавить:

3 Секретные части документа

Некое министерство обязано выкладывать документы в общественный доступ, но часть документа является не предназначенной для показа любому желающему (назовем эту часть — номер телефона). Сам документ состоит из блоков, каждый из которых может быть либо текстом, либо номером телефона — скрытой частью, которую видеть могут только особые пользователи, подписавшие соглашение о неразглашении.

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

4 Команда и ее проекты

Если у вас большая команда, и много проектов, и такая команда у вас не одна, то координировать работу их будет той еще задачей. Особенно если таких команд у вас тысячи. Каждому разработчику вы доступы не пропишите, а если у вас человек еще и в нескольких командах работает, то разграничивать доступ станет еще сложнее.

Такую проблему проще всего решить при помощи групп.Группа будет объединять все необходимые проекты в одно целое. При добавлении участника в команду, добавляем меппинг (Пользователь, Группа, Роль).

Допустим, что Вася — разработчик и ему нужно вызвать метод develop на микросервисе для выполнения своих обязанностей. Этот метод потребует у Васи роли в проекте — Разработчик.Как мы уже договаривались — регистрация пользователя в каждый проект для нас недопустима.

Поэтому микросервис проектов обратится в микросервис групп, что бы получить список групп, в которых Вася — Разработчик. Получив список этих групп можно легко проверить уже в БД микросервиса проектов — есть ли у проекта какая-нибудь из полученных групп и на основании этого предоставлять или запрещать ему доступ.

Использование

В качестве примера возьмем стандартное приложение Yii, сгенерированное командой

`yiic webapp create`

, и добавим возможность авторизации через Google и Яндекс (OAuth провайдеров подключать не будем, чтобы не возиться с ключами). Посмотреть готовую

2 Архитектура решения


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

  1. Ролевая модель для глобальной авторизации запросов
  2. Чайный сервис для предоставления возможности пить чай и получать статистику по выпитому
  3. Кракен — гейт с проверкой доступа к точке, все остальные проверки совершит чайный сервис

Графически это будет выглядеть так:

Xsolla Documentation - Сквозная аутентификация

В качестве БД будем использовать PostgreSQL.Предусмотрим следующие обязательные для решения задачи роли:

  1. Сотрудник — для возможности пить чай;
  2. Удаленный сотрудник — для доступа к микросервису кракена (так как сотрудники в офисе не должны иметь возможности пить чай через точки распрастранения чая);
  3. Кракен — учетная запись микросервиса, что бы была возможность обращаться к API чайного сервиса;
  4. Авторизационная учетная запись — для предоставления доступа микросервисов к ролевой модели.

2 Редактирование SiteContoller

Вторым шагом будет изменение действия

`site/login`

. Добавим следующий код в начало действия:

3 Редактируем представление `protected/views/site/login.php`


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

Для изменения внешнего вида виджета можно скопировать файл

`protected/extensions/eauth/views/auth.php``[theme_name]/views/EAuthWidget/auth.php`

4 Результат

После всех проделанных действий мы можем открыть наш сайт и перейти на страницу Login. После стандартной формы авторизации появятся иконки сервисов авторизации:

При клике, например, по иконке Google откроется popup окно: Popup окно авторизации

5 реализация микросервисов

Для реализации воспользуемся Spring фреймворком, он довольно медленный, но зато на нем легко и быстро можно реализовывать приложения. Так как за перформансом мы не гонимся, то попробуем на нем достичь скромных 1к рпс авторизованных пустых запросов (хотя люди на спринге умудрялись 100к пустых запросов проворачивать [1]).

Весь проект поделен на несколько репозиториев:

Для начала разберемся с базой данных ролевой модели:

Xsolla Documentation - Сквозная аутентификация

Алгоритм sso в manageengine servicedesk

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

ServiceDesk Plus внедрил безопасный канал в Active Directory, используя службу NETLOGON через учетную запись компьютера. Для включения службы NetLogon эта учетная запись компьютера требует пароль. Сервис NetLogon является внутренним каналом связи Microsoft.

Один компьютер создаст уникальный идентификатор в домене и создаст некоторый случайный пароль для дальнейшей связи в домене. Например, когда пользователь пытается войти в систему, компьютер выдаст свою идентификационную информацию AD, а затем попытается аутентифицировать пользователя.

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

ServiceDesk Plus использует VBScript для создания учетной записи компьютера и установки пароля для них. Начиная с версии 7600, ServiceDesk Plus для сквозной аутентификации использует метод NTMLV2, который обеспечивает лучшую безопасность и проверяет учетные данные с помощью сервиса NETLOGON, и NTLMV1 больше не будет поддерживаться.

Показывать настройку сквозной авторизации я буду на ManageEngine ServiceDesk 10016, которую я недавно обновил. Открываем веб интерфейс ManageEngine ServiceDesk, находим раздел “Параметры – Active Directory”.

Находим раздел “Проверка подлинности Active Directory” и активируем функцию “Включить сквозную авторизацию (единый вход)”.

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

Чтобы использовать поставщик безопасности NTLM в качестве службы проверки подлинности, необходимо создать учетную запись компьютера в Active Directory с определенным паролем, который соответствует политике паролей в Active Directory.

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

Если вы указываете имя существующей учетной записи компьютера, указанный здесь пароль также будет установлен в Active Directory для этой учетной записи компьютера. Вы также можете сбросить пароль учетной записи компьютера, нажав на ссылку «Сбросить пароль».

Даже если при создании учетной записи компьютера или сброса пароля (уже созданной учетной записи компьютера) из приложения возникнет ошибка, сведения, указанные в окне, будут сохранены в базе данных приложения. Загрузите сценарии и сохраните сценарии NewComputerAccount.vbs и SetComputerpass.vbs. Оба сценария нам пригодятся.

Включаем kerberos аутентификацию в google chrome

Google Chrome берет все настройки SSO из Internet Explorer, так что настройте его и еще выполните вот такую команду. Кроме того, нужно отметить, что все новые версии Chrome автоматически определяют наличие поддержки Kerberos. В том случае, если используется одна из старых версий Chrome (Chromium), для корректной авторизации на веб-серверах с помощью Kerberos, его нужно запустить с параметрами:

Например, “C:Program Files (x86)GoogleChromeApplicationchrome.exe” –auth-server-whitelist=”*.vhod-v-lichnyj-kabinet.ru” –auth-negotiate-delegate-whitelist=”*.vhod-v-lichnyj-kabinet.ru”. Сделать это можно из командной строки.

На этом у меня все. Мы с вами подробно разобрали настройку сквозной авторизации (единого входа) в ManageEngine ServiceDesk 10016. С вами был Иван Семин, автор и создатель IT портала vhod-v-lichnyj-kabinet.ru.

Для кого подходит

Для партнеров, у которых уже подключен продукт Авторизация и используется хранилище Иксоллы, Firebase или PlayFab.

Задачи проекта

  • Внедрение внешнего и внутреннего контуров Websoft HCM (WebTutor)
  • Настройка и использование репликации между контурами
  • Настройка типового дизайна учебного портала 
  • Доработка функционала для сквозной авторизации учебного портала Websoft HCM (WebTutor) и портал программы «Вектор»

Запуск сценариев на сервере active directory

Скопируйте в корень диска C: оба сценария, NewComputerAccount.vbs и SetComputerpass.vbs.

На контроллере домена, куда вы скопировали ваши скрипты, откройте командную строку от имени администратора. Перейдите в командной строке в корень диска C:, через команду cd C:. Если нужно создать новый компьютер, то введите:

Если нужно сменить пароль, то конструкция будет такой

Так же я вас советую включить логирование на вашем сервере ManageEngine ServiceDesk, поставив соответствующую галку в SSO. Логи будут лежать в C:ManageEngineServiceDesklogssso.txt

Как внедряли

  • Взаимодействовали по подготовке серверов в соответствии с техническими характеристиками. Сначала развернули доступный извне сервер внешнего контура, так как требования к нему были слабее, чем ко внутреннему контуру. 
  • Настроили дизайн в соответствии с брендбуком заказчика. 
  • Выполнили установку и базовую настройку системы на сервере внутреннего контура. 
  • Осуществили настройку репликации между серверами по ТЗ, согласованному с заказчиком. Загрузка настроенной репликации выполнялась с помощью заказчика. Из-за пандемии специалистам WebSoft  и ИТ-команде заказчика  пришлось работать совместно в условиях, когда получить удаленный доступ к закрытому контуру было невозможно.

Работы были завершены в заданные сроки и в системе сразу же была запущена пилотная группа обучения внешних пользователей. 

Как настроить

Чтобы подключить сквозную аутентификацию:

  1. Подключите протокол OAuth 2.0.
  2. Реализуйте вызов метода получения сессии пользователя.

Как это работает

Если у вас есть несколько связанных сервисов, на которых пользователь авторизуется под одним аккаунтом, вы можете использовать сквозную аутентификацию (Single Sign-On/SSO). В качестве сервиса выступает веб-сайт игры. Это позволит пользователю вводить данные аутентификации только один раз. При переходе на один из связанных сервисов пользователь уже будет авторизован.

Настройка браузера для sso

Откройте ваш Internet Explorer и перейдите в его свойства.

Перейдите на вкладку “Безопасность” далее “Местная интрасеть – Сайты” нажимаем кнопку “Дополнительно” и добавляем адрес нашего ManageEngine ServiceDesk в узлы.

Установите на интрасети, низкий уровень безопасности и нажмите кнопку “Другой”

Активируйте пункт “Автоматический вход в сеть с текущим именем пользователя и паролем”

Далее сохраните настройки и перейдите на вкладку “Дополнительно” и активируйте галку “Разрешить встроенную проверку подлинности Windows”

После этого закройте Internet Explorer и заново откройте. Проверьте сквозную авторизацию в ManageEngine ServiceDesk.

О компании

Академия Ростеха — это центр экспертизы госкорпорации в сфере развития человеческого капитала. Главная задача Академии Ростеха — помогать сотрудникам предприятий Ростеха получать знания и навыки, которые необходимы для реализации стратегии госкорпорации.

Академия Ростеха предлагает образовательные программы для сотрудников организаций Ростеха, услуги по оценке персонала и консалтинг — от развития корпоративной культуры до акселерации проектов. Программы Академии Ростеха рассчитаны на руководителей разных уровней, сотрудников инженерно-технических профессий и молодых специалистов.

Подключение протокола oauth 2.0

Воспользуйтесь инструкцией для подключения протокола OAuth 2.0. Вы можете использовать один OAuth 2.0 клиент для всех сервисов или создать отдельный OAuth 2.0 клиент для каждого сервиса.

Разделение прав доступа для разных сервисов

Чтобы обеспечить разделение прав доступа к аккаунту пользователя для разных сервисов, вы можете использовать в разных OAuth 2.0 клиентах специальные значения параметра scope, например scope=playfab.

Сквозная авторизация ie (аутентификация kerberos).

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

Для того чтоб это работало необходимо следующее:

-В IE должна присутствовать галка: Разрешить встроенную проверку Windows (она стоит по умолчанию);

Xsolla Documentation - Сквозная аутентификация

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

Xsolla Documentation - Сквозная аутентификация

Задача оказалась не такой простой, как казалось изначально.

Для не доменных машинок процесс достаточно прост:

Откройте Свойства браузера -> Безопасность -> Местная интрасеть (Local intranet), нажмите на кнопку Сайты -> Дополнительно. Добавьте в зону следующие записи:

https://*.comp.loc

Xsolla Documentation - Сквозная аутентификация

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

Открываем редактор локальной (gpedit.msc) либо доменной (gpmc.msc) политики.

Переходим в раздел Конфигурация компьютера -> Административные шаблоны -> Компоненты Windows -> Internet Explorer -> Панель управления браузером -> Вкладка безопасность.

Включаем политику Список назначений зоны безопасности для веб-сайтов. В настройках политики нужно указать список доверенных серверов в формате:

В моем случае правим отдельную политику IE Default (ранее она уже была создана для других манипуляций IE):

Xsolla Documentation - Сквозная аутентификация

Xsolla Documentation - Сквозная аутентификация

Xsolla Documentation - Сквозная аутентификация

Сохраняем политику.

На компе gpupdate /force

Xsolla Documentation - Сквозная аутентификация

Теперь в IE появляются следующие настройки:

Xsolla Documentation - Сквозная аутентификация

Можно проверить ветку реестра:

HKEY_CURRENT_USERSoftwareMicrosoft WindowsCurrentVersion Internet SettingsZoneMapDomains.

http://192.168.10.15:8080/HomePage.do?SkipNV2Filter=true

Теперь авторизация проходит без пароля. Это радует. Но работает пока только в IE. В Chrome у меня не сработало, но потом все вроде подхватилось и под Chrome.

Но если все же не заработало, то можно прикрутить в GPO шаблон под Chrome:

http://winitpro.ru/index.php/2022/06/06/nastrojka-google-chrome-gruppovymi-politikami/

Сейчас эти галки возможно убрать руками просто зайдя в настройки IE:

Xsolla Documentation - Сквозная аутентификация

Чтоб такой возможности у пользователей не было, можно включить все три вот этих политики:

Xsolla Documentation - Сквозная аутентификация

В остальном все, что необходимо, заработало без проблем.

P.S. VmWare по умолчанию, к сожалению, сквозную аутентификацию не отработала.

Xsolla Documentation - Сквозная аутентификация

Пришлось переставить плагин.

Xsolla Documentation - Сквозная аутентификация

После его переустановки  все благополучно подхватилось.

Всем хорошей работы!!!

04.06.2022
Posted by khlebalin |
scripts&GPO

Sorry, the comment form is closed at this time.

Сквозная авторизация в ad

Как сделать сквозную авторизацию по имени пользователя в AD на компьютерах с Windows?

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

Ссылки

UPDATE:

в пункте «3.2 Настройка» не хватало расширения loid, добавил.

UPDATE 2:

Актуальная версия и инструкция по настройке доступны на

Заключение

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

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

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

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

11 Выводы по обобщенной модели

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

Итоги и результаты

  1. В данный момент Websoft HCM используется, для обучения двух первых групп сотрудников. В планах – охват предприятий Ростеха по всей России.  
  2. Выполнены две основные задачи – портал доступен извне, и на внешнем сервере  не хранятся персональные данные.
  3. Восполнен пробел – у заказчика появилась площадка для прохождения электронных курсов и тестов, при этом все данные хранятся на закрытом сервере Ростеха и соблюдены жесткие требования информационной безопасности. 
  4. Найдено решение для простой и быстрой интеграции учебного портала и системы “Вектор” – с минимальными затратами без сложной интеграции или «встраивания» функционала дистанционного обучения в портал «Вектора». 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *