Как использовать одну и ту же учетную запись для нескольких компаний (точно так же, как одну и ту же учетную запись можно использовать для нескольких рабочих областей в Slack) - PullRequest
0 голосов
/ 23 января 2019

Я работаю над веб-приложением, основанным на Google App Engine (GAE). Требование приложения заключается в том, что один пользователь может быть связан с несколькими учетными записями компании.

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

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

Я тоже хочу добиться того же в своем приложении. Мне интересно, как Slack поддерживает эту функцию прямо сейчас? Посылает ли он некоторые ID с каждым запросом на сервер, что указывает на то, что только что выполненное действие связано с рабочей областью под этим ID? Или есть какой-то уникальный маркер, связанный с каждым рабочим пространством (на уровне Slack API)?

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

Кто-нибудь знает, как лучше всего достичь этого?

1 Ответ

0 голосов
/ 23 января 2019

Здесь работают две разные концепции:

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

Структура данных для учетной записи Slack разработана таким образом, что она может быть связана с несколькими рабочими пространствами Slack, например, в SQL между счетами и таблицей рабочих пространств может быть отношение «многие-два-многие».

Оставайтесь в системе

Способ Slack и другие функции единого входа, такие как единый вход в Google, позволяют вам войти в систему путем настройки файла cookie браузера. Этот файл cookie обычно представляет собой своего рода криптографический хэш, и поставщик единого входа будет использовать его для определения того, к какой учетной записи принадлежит текущий пользователь, или для запроса входа в систему через OAuth, если файл cookie отсутствует / недействителен.

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

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

...