Аутентифицировать пользователя Slack в сообщении бота, опубликованном в событии

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

Есть ли способ на платформе Slack быть поставщиком Oauth для Slack или каким-либо способом аутентифицировать сообщения?

Спасибо


person Thomas Kessler    schedule 18.07.2016    source источник
comment
Я не думаю, что то, что вы ищете, поддерживается вообще. НО есть способы узнать, откуда пришло сообщение через team_id, user_id, channel_id и т.д.   -  person Wilhelm Klopp    schedule 19.07.2016
comment
@WilhelmKlopp - я использую сообщения из пользовательского канала бота для выполнения действий в системе без резервной копии для пользователя. Я хотел бы использовать oauth для аутентификации пользователя в моей системе перед выполнением действия в сторонней системе.   -  person Thomas Kessler    schedule 19.07.2016


Ответы (1)


Ах я вижу! Итак, опять же, это не совсем то, что вы ищете, но это довольно близко:
Что вы можете сделать, так это использовать свою собственную систему OAuth, внешнюю по отношению к Slack, а затем привязать пользователей в этой системе к user_ids из вашего Slack team.
По запросу конкретного пользователя ваш бот может отправить этому пользователю DM уникальный URL-адрес, привязанный к вашей собственной (внешней slack-внешней) системе OAuth. После завершения процесса вы можете связать свой способ идентификации пользователей со Slack (т.е. team_id и user_id).

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

Я построил нечто подобное несколько месяцев назад. Здесь мы используем OAuth API Mondo поверх собственного OAuth Slack: Mondobot. Файл с соответствующим кодом этот.

person Wilhelm Klopp    schedule 18.07.2016
comment
Хорошо, это то, что у меня уже есть. Я надеялся на лучший / более чистый способ аутентификации. Сообщения приходят и проверяются только на соответствие userId Slack, а не фактическому токену, но, возможно, это не имеет особого значения, поскольку пользователь уже прошел аутентификацию через свой клиент Slack. Спасибо. - person Thomas Kessler; 19.07.2016