Я создаю приложение для Slack с прикрепленным веб-интерфейсом / панелью инструментов команды.Встроенный узел, я изо всех сил пытаюсь заставить Slack auth и Client auth в одно плавное движение.
Я использую passport.js для аутентификации со Slack Strategy для аутентификации пользователей при использовании приложения в Slack (используя кнопку Войти с помощью Slack ).Этот обратный вызов Slack auth содержит всю необходимую пользователю информацию, поэтому я хочу использовать ее, чтобы также аутентифицировать пользователя для доступа к информационной панели его команды в веб-клиенте.Это где JWT вступает в игру.
Я впервые работаю с аутентификацией JWT, но теоретически есть смысл использовать стратегию JWT в паспорте для аутентификации для клиента.
Вот код для стратегии паспорта Slack, которая отлично работает:
<code>passport.use(
new SlackStrategy(
{
clientID: process.env.SLACK_CLIENT_ID,
clientSecret: process.env.SLACK_CLIENT_SECRET,
scope: [
'identity.basic',
'identity.avatar',
'identity.email',
'identity.team',
'users.list',
'chat:write:bot',
],
skipUserProfile: false,
},
(accessToken, scopes, team, extra, profiles, done) => {
if (extra.bot != null) {
Team.postTeamOnInstall(team, extra.bot.accessToken)
} else {
User.postUser(accessToken, profiles)
}
done(null, {})
}
)
)
app.get(
'/auth/slack',
passport.authenticate('slack', {
scope: ['bot'],
})
)
app.get(
'/auth/slack/callback',
passport.authenticate('slack', { session: false }),
(req, res) => {
// what if called JWT authentication here? that then redirects to the team dashboard
res.redirect(`http://${process.env.BASE_URL}`)
},
(err, erq, res, next) => {
res
.status(500)
.send(`<p>Think Fish failed to install</p> <pre>${err}
`)})
Теперь я следовал базовому учебнику длястратегия JWT .Так что мой код с этой стороны выглядит идентично этому.Я действительно просто хочу знать:
1) Кто-нибудь делал это или что-то подобное?Думаю ли я об этом правильный путь?Это возможно?
2) Если это так, как Стратегия Slack и Стратегия JWT могут общаться друг с другом, чтобы аутентифицировать пользователя для Slack и клиента одним движением ( Войти с помощью кнопки Slack )?
Я мог бы также чрезмерно спроектировать это, и вместо этого просто нужен какой-то способ для безопасного маршрута, чтобы проверить, вошел ли пользователь в Slack уже?