Slack Oauth: автоматически авторизовать пользователя, если пользователь уже авторизовал приложение - PullRequest
1 голос
/ 21 октября 2019

Я работаю над приложением Slack, которое пользователь может установить в рабочее пространство, используя поток Oauth Slack. После установки и настройки приложения я использую Oauth, чтобы позволить пользователю войти в систему и внести изменения в конфигурацию приложения.

Поток для нового пользователя использует кнопку «Добавить в Slack», которая просит пользователя согласиться разрешить области bot и identity.*, после чего мое приложение получает и сохраняет токены бота и пользователя.

Теперь я бы хотел, чтобы один и тот же пользователь мог войти в систему с помощью потока Oauth «Войти через Slack». В соответствии с документацией Slack , поток "Вход в Slack" позволяет использовать только ту же конечную точку /oauth/authorize, но запрашивает только одну из identity.* областей (я использую identity.basic):

<a href="https://slack.com/oauth/authorize?scope=identity.basic&client_id=REDACTED">Sign in with Slack</a>

Пользователь уже авторизовал мое приложение для областей bot и identity.* при первоначальной установке приложения, но неожиданно ему / ей предлагается подтвердить разрешение приложения identity.* накаждое действие «Войти с Slack».

Документация Slack подразумевает, что последующие попытки входа в систему приведут к автоматическому перенаправлению:

После того, как пользователь нажмет на кнопку «Войти с Slack»,их веб-браузер должен появиться на серверах Slack.

Ваше приложение будет терпеливо ждать, пока пользователь обрабатывает какую-либо работу, или Slack просто отправляет их по пути обратно на URL перенаправления.

(выделено мной)

Однако Slack всегда просит пользователя (повторно) авторизовать мое приложение для identity.* областей. Как я могу войти в систему, используя Slack одним щелчком мыши?

1 Ответ

0 голосов
/ 21 октября 2019

Для вашего требования реализовать веб-страницу, которая связана с вашим приложением Slack с аутентифицированным пользователем Slack, у вас есть две альтернативы:

Вход в Slack

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

Обратите внимание, что этот процесс аутентификации не зависит от того, входит ли пользователь в свое рабочее пространство Slack.

Собственная аутентификация

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

Обратите внимание, что этот URL-адрес может быть получен и потенциально неправильно использован пользователем, поэтому вам потребуетсядобавить меры для его защиты, например, зашифровав идентификаторы или добавив безопасный хеш или одноразовый токен ...

...