Как организовать «общую на офис» двухфакторную аутентикацию в Google Account?
Имеется организация, использующая Gmail for business для рабочей переписки. У каждого сотрудника есть google-аккаунт name.surname@company.com, с которым они могут заходить в общие почтовые ящики типа sales@company.com, purchase@company.com и т.п.
Чтобы уменьшить риск утечки конфиденциальных данных, хозяин организации хочет, чтобы его сотрудники не могли заходить в рабочую почту, когда физически находятся вне офиса. Идеальным решением была бы двухфакторная аутентикация с использованием некоего устройства, зафиксированого в офисе -- например, генератора одноразовых паролей в виде большущего дисплея на стене.
Что-то подобное можно было бы соорудить на основе Google Authenticator; но увы, один authenticator можно привязать только к одному google-аккаунту, а отображая на дисплее двадцать кодов, по одному для каждого сотрудника, мы их всех только запутаем.
По похожей причине не подойдёт FIDO U2F Security Key -- один токен можно привязать только к одному аккаунту, сотрудники в разные дни сидят за разными компьютерами, а если им разрешить переставлять токен из одного компьютера в другой, то они его и домой точно так же заберут.
Может, кто-нибудь уже реализовывал что-то подобное?
К сожалению, ваша задача не решается только аутентификацией, т.к. сотрудник может "унести" наружу уже авторизованную сессию (например, скопировать куки или просто залогиниться на телефоне или создать сборщик в другой ящик, или подключиться в почтовой программе с OAuth-аутентификацией).
Вам необходима система, которая будет сама логинить пользователя в эккаунт, создавать ему сессию в GMail и передавать ее в браузер, например через плагин в браузере, который будет получать уже готовые сессионные куки и проставлять их в браузере, может быть это можно организовать через синхронизацию профиля в браузере. Но кроме этого, необходимо терминировать эту сессию когда пользователь уходит домой (например когда он логаутится или через какой-то период неактивности).
В рамках такой системы вы можете для каждого эккаунта GMail хранить пароль + TOTP-ключ, а уже для доступа к ней делать какую-то дополнительную свою единую аутентификацию + авторизацию (каким пользователям к каким эккаунтам разрешен доступ).
Спасибо за идею, но для нашего случая это overkill: защищаемся не от целенаправленных "шпионов", а от ситуаций типа "встретил в баре знакомого, и после второго стакана решил ему с телефона похвастаться недавно закрытыми заказами".
tyomitch, ну общей схемы это не меняет. Храните TOTP ключи от GMail-эккаунтов в закрытой базе, а пользователя авторизуйте сами в своей базе и показывайте ему код сгенерированный по TOTP-ключу от нужного эккаунта.
Владимир Дубровин, отличное предложение! Так и начал делать... и вдруг обнаружил, что Google не позволяет администратору домена ограничить для пользователей выбор второго фактора аутентикации.
Т.е. мы им показываем наши "офисные" TOTP-коды, но им ничего не мешает добавить в свой аккаунт, и использовать вместо наших кодов, свой собственный Authenticator, или смс-сообщения, или что угодно ещё.
:-(
Интересно, есть ещё какие-нибудь варианты, кроме "плагин в браузере, который будет получать уже готовые сессионные куки и проставлять их в браузере" ?