Как настроить авторизацию с OAuth в SlackAPP ​​для новых пользователей? - PullRequest
0 голосов
/ 19 ноября 2018

У меня есть программа на основе c #, которая может отправлять сообщения и файлы в наше SlackWorkspace через мой SlackApp (я использую HttpClient для связи со Slack).

Теперь, чтобы распространить эту программу в моем рабочем пространстве и сделать так, чтобы у каждого пользователя была своя собственная личность, это говорит о том, что я должен использовать OAuth и создавать токены проверки, специфичные для каждого пользователя. В Slack-документации говорится, что я должен использовать URL-адрес перенаправления (согласно docs ) для моего собственного сервера.

У нас есть сервер, который я мог бы использовать для этого. Но я никогда не делал ничего подобного раньше, и мне неясно, какой «ответ» я должен предоставить с нашего сервера. Я думал, что процесс проверки будет обрабатываться Slack.

У кого-нибудь есть идеи, как к этому подойти?

И прежде чем кто-нибудь спросит - да, нам нужно установить его для всех и сделать их идентифицируемыми как самих себя. Мы не можем использовать «SlackApp» в качестве пользователя. :)

Буду очень признателен за примеры кода (на c #) и объяснения того, как работает вся эта вещь перенаправления.

1 Ответ

0 голосов
/ 20 ноября 2018

Slack использует стандартный протокол Oauth 2.0 для аутентификации приложений, аналогично Google и Facebook.

Таким образом, «процесс проверки» действительно в основном обрабатывается Slack (как указано здесь ), но ваше приложение Slack должно инициировать его и правильно обрабатывать ответы. Также это многошаговый процесс и включает в себя пользователя, который должен войти в Slack со своими учетными данными. Вот почему вам нужно веб-приложение для обработки всего процесса.

Чтобы приложение Slack могло генерировать токены через Oauth, необходимо веб-приложение:

  • может быть достигнуто из Интернета
  • способен обрабатывать HTTP-запросы, как веб-сервер
  • имеет постоянное хранилище для вновь сгенерированных токенов

Вероятно, это проще реализовать с ASP.NET Web Pages , которая может использовать множество функций с существующего веб-сервера.

Но для этого ответа давайте рассмотрим реализацию в .NET Core. Для этого нам нужно создать собственный веб-сервер и некоторую элементарную обработку сессий. Основные понятия включают в себя:

Подробности выходят за рамки одного ответа. Но я рад поделиться рабочим примером реализации этого GitHubGist .

Кстати: для локальной разработки такого веб-приложения рекомендуется использовать VPN-туннель, такой как ngrok , который позволяет безопасно подключать локальную машину к Интернету и Slack.

...