Рекомендации по аутентификации веб-приложений в промышленных условиях

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

Вопрос. Каков наилучший способ обеспечения безопасности/аутентификации веб-приложений и какие существуют альтернативы?

  • Будут ли все они использовать один и тот же сеанс аутентификации (это нежелательно, так как я хотел бы однозначно идентифицировать активного пользователя)?
  • Очевидно, что я мог бы использовать стандартные имя пользователя/пароль с сеансами на основе токенов, срок действия которых истекает, однако это оставляет большой потенциал для захвата учетной записи.
  • В идеале они могли бы войти в систему очень быстро (возможно, по PIN-коду?), и их сеанс завершится, когда они закончат.

person karns    schedule 14.07.2020    source источник
comment
Чем особенна тяжелая промышленность? Должны ли мы ожидать, что пользователи будут носить защитное снаряжение (таким образом ограничивая ввод/пролистывание)? Насколько важны безопасность и аутентификация — могут ли они нанести ядерный удар через это приложение или это бизнес-приложение? Вы говорите планшет или компьютер — можете ли вы полагаться на параметры аутентификации на уровне операционной системы — например, если это компьютер в сети, можете ли вы использовать сетевую аутентификацию, вкл. считыватели отпечатков пальцев и т. д.?   -  person Neville Kuyt    schedule 05.08.2020
comment
@NevilleKuyt хорошие вопросы. Больше похоже на бизнес-приложение (производство продуктов, приложение используется операторами для ввода данных и записей). Это будет по сети, да. Частью вопроса является рекомендация по аппаратному обеспечению. Планшет — это то, что, по моему мнению, было бы неплохо иметь. С учетом сказанного, снятие отпечатков пальцев может быть вариантом, хотя я не знаю, почему или почему бы этого не сделать.   -  person karns    schedule 05.08.2020


Ответы (3)


Спасибо за публикацию этой классной проблемы.

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

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

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

person Douglas Lovell    schedule 05.08.2020
comment
Спасибо! В этом случае использования не стоит беспокоиться о том, что сотрудники будут действовать злонамеренно, передавая учетные данные или крадя. Безопасная обстановка, в которой все люди могут считаться наемными работниками. Ради обсуждения предположим, что это не проблема. Как вы видите разницу между идентификацией и аутентификацией? Для меня они могут быть одним целым. Идентификация важна как для аудита, так и для наборов разрешений. - person karns; 05.08.2020
comment
Благодарим Вас за разъяснения. Вот полезная статья от IBM: ibm.com/support/knowledgecenter/en/SSFKSJ_7.5.0/ Идентификация — это возможность однозначно идентифицировать пользователя системы или приложение, работающее в системе. Аутентификация — это возможность доказать, что пользователь или приложение действительно является тем, за кого себя выдает это приложение. В вашем случае аутентификация может не иметь значения. Это может быть полезным различием. - person Douglas Lovell; 06.08.2020

Можете ли вы сделать аутентификацию смарт-карты? Вот как мы делали это в старые времена. Это было где-то в 2006 году, на Windows XP. Считыватель смарт-карт был USB-устройством, авторизация была стандартной Windows со смарт-картой, однако я ничего не могу вспомнить о картах.

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

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

РЕДАКТИРОВАТЬ

Для некоторых более конкретных примеров этого:

  • Вот статья Windows об аутентификации с помощью смарт-карты: https://docs.microsoft.com/en-us/windows/security/identity-protection/smart-cards/smart-card-how-smart-card-вход-работает-в-окнах У меня нет опыта работы с картами/кардридером, но обычно это хлеб с маслом для промышленных площадок, где пользователь должен следить за часами. вкл/часы выкл.

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

    • You could also use SAML Federation between an IdP and ADFS/AzureAD which would allow you to issue a OAuth2 access token
    • Поддержка Okta может выполнять SSO (эффективно скрывая федерацию SAML) с помощью подключаемого модуля браузера: https://help.okta.com/en/prod/Content/Topics/Apps/Apps_Browser_Plugin.htm.
  • Конечным результатом является то, что для пользователя, вошедшего в Windows, вы можете выдать токен доступа Oauth2/OIDC.

  • Веб-приложение может использовать стандартную аутентификацию маркера доступа OAuth2.

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

Удачи!

person stringy05    schedule 05.08.2020
comment
Я миллениал XD Я уверен, что мог бы исследовать оборудование для сканирования RFID-карт, которое у каждого сотрудника было бы свое. Если бы у вас было больше информации о том, как реализовать это с помощью более современных веб-технологий, это было бы здорово. - person karns; 05.08.2020

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

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

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

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

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

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

person Neville Kuyt    schedule 05.08.2020
comment
Цените это. Что касается управления корпоративной идентификацией, у нас не так много возможностей для этого. Я знаю, вы сказали, что он находится на ранней стадии разработки, но не могли бы мы придерживаться отпечатков пальцев или кодов доступа, полностью основанных на Интернете? Что касается биометрических входов в систему на уровне операционной системы, как это предотвратит выход из устройства при входе в систему? Разве это не было бы похоже на то, что у меня был бы тайм-аут, похожий на сеансы? - person karns; 05.08.2020