Неявный поток аутентификации для приложения Shopify с использованием koa-shopify-auth - PullRequest
0 голосов
/ 05 августа 2020

У меня есть интерфейс React, созданный следующим образом: https://shopify.dev/tutorials/build-a-shopify-app-with-node-and-react

Это приложение NextJs React с настраиваемым Koa сервером для обслуживания NextJs приложение. Этот сервер Koa использует пакет koa-ashopify-auth для выполнения OAuth с Shopify и получения токена доступа.

Это код промежуточного программного обеспечения аутентификации:

    server.use(
      createShopifyAuth({
        apiKey: SHOPIFY_API_KEY as string,
        secret: SHOPIFY_API_SECRET_KEY as string,
        scopes: ['read_products'],
        afterAuth(ctx) {
          const { shop, accessToken } = ctx.session as IShopifyKoaSession

          >>> I would like to create a user on my own backend now and login the user.
          
           .... more stuff
        }
      })
    )

У меня есть бэкэнд Django, в котором я буду настраивать конечную точку REST для аутентификации с моим бэкэндом (я бы хотел использовать JWT).

Итак, я выполнил OAuth с Shopify на стороне клиента и иметь токен доступа

Как использовать этот токен доступа на стороне клиента и безопасно создать нового пользователя на моем сервере безопасным способом?

Я думаю что-то вроде ->

    ...
    const { shop, accessToken } = ctx.session as IShopifyKoaSession
    await myApiService.createOrUpdateUser(shop, accessToken) // Calls my external backend

Как мне go это сделать? По сути, это неявный поток oauth.

Вышеупомянутое не будет безопасным, если не будет способа проверить магазин и токен доступа на бэкэнде.

1 Ответ

0 голосов
/ 06 августа 2020

Вы можете, например, использовать модуль next-auth, который является OSS и имеет хороший API

https://next-auth.js.org/

Посмотрите этот пример здесь. Между прочим, все остальные примеры - solid, настоятельно рекомендуется заходить туда каждый раз, когда вы не уверены в подходе.

https://github.com/vercel/next.js/tree/canary/examples/with-next-auth

Этот конкретный учебник кажется также актуально (с использованием next-auth) https://next-auth.js.org/tutorials/securing-pages-and-api-routes

В общем, вы можете воспользоваться преимуществами рендеринга на стороне сервера и поддержкой маршрутов / pages / api для создания внутренних маршрутов, которые получают токены JWT из бэкэнда Django.

...