2016-07-18 2 views
2

У меня есть приложение Slack bot, которое должно аутентифицировать полученные сообщения. Вместо того, чтобы получать токен от Slack, мое приложение будет предоставлять токен Slack. Затем Slack отправил токен в мое приложение во время каждого запроса. Мое приложение затем может аутентифицировать, откуда появилось сообщение.Authenticate slack user in bot сообщение отправлено событие

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

Спасибо

+0

Я не думаю, что точная вещь, которую вы ищете поддерживается _at all_. НО есть способы увидеть, откуда послали сообщение через команды «team_id», «user_id», «channel_id» и т. Д. Может быть, вы могли бы расширить то, что будет использоваться для этого? –

+0

@WilhelmKlopp - Я использую сообщения от бот-пользовательского канала для выполнения действий в ненадежной системе для пользователя. Я хотел бы использовать oauth для аутентификации пользователя в моей системе перед выполнением действия в сторонней системе. –

ответ

4

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

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

Я построил что-то вроде этого несколько месяцев назад. Здесь мы используем OAuth в Mondo API, на вершине собственной OAuth слабины в: Mondobot файл с соответствующим кодом является this one.

+1

Хорошо, это то, что у меня уже есть. Я надеялся на лучший/более чистый способ аутентификации. Сообщения поступают и проверяются только с помощью пользователя slackInd, а не фактического токена, но, возможно, это не имеет особого значения, поскольку пользователь уже прошел аутентификацию через свой клиент Slack. Спасибо. –