Соединение Oauth2 GitHub с пером, размещенным на EC2

Я создал поток Oauth на github с бэкэндом FeathersJS. При запуске этого на локальном хосте все работает нормально. В настоящее время я тестирую развертывание в AWS на EC2 и на экземпляре EC2, я не могу заставить поток работать. Я получаю redirect_uri_error.

{
"error": "redirect_uri_mismatch",
"error_description": "The redirect_uri MUST match the registered callback URL for this application.",
"error_uri": "https://developer.github.com/apps/building-integrations/setting-up-and-registering-oauth-apps/troubleshooting-oauth-app-access-token-request-errors/#redirect-uri-mismatch(2)"
}

Я думаю, что перья автоматически создает URI перенаправления из параметров в файлах конфигурации. Согласно документам, URI выглядит так: http(s)://hostname[:port]/auth/<provider>/callback, Я запускаю приложение в производственном режиме с настройками ниже. Что я делаю неправильно?

default.json:

{
  "host": "localhost",
  "port": 3030,
  "public": "../public/",
  "paginate": {
    "default": 10,
    "max": 50
  },
  "mongodb": "my_mongo_connection_string",
  "authentication": {
    "secret": "my_auth_secret",
    "strategies": [
      "jwt",
      "local"
    ],
    "path": "/authentication",
    "service": "users",
    "jwt": {
      "header": {
        "type": "access"
      },
      "audience": "https://example.com",
      "subject": "anonymous",
      "issuer": "feathers",
      "algorithm": "HS256",
      "expiresIn": "1d"
    },
    "local": {
      "entity": "user",
      "usernameField": "email",
      "passwordField": "password"
    },
    "github": {
      "clientID": "my_client_id",
      "clientSecret": "my_client_secret",
      "successRedirect": "/"
    },
    "cookie": {
      "enabled": true,
      "name": "feathers-jwt",
      "httpOnly": false,
      "secure": false
    }
  }
}

production.json

{
  "host": "my-ec2-instance.compute.amazonaws.com",
  "port": "3030"
}

Конфигурация Github Конфигурация GitHub

РЕДАКТИРОВАТЬ: изменил succesRedirect на "/"

2 ответа

Решение

Хорошо, я нашел решение этой проблемы. В рабочем режиме приложение перьев по-прежнему берет URL из default.json для создания обратного вызова. Поэтому рабочий URL-адрес должен быть не только заполнен в production.json, но и тот же URL-адрес должен быть введен в default.json.

Глядя на пример кода в этом сообщении в блоге feathersjs, вы должны добавить callbackURL параметр в вашем github раздел конфигурации с тем же значением, которое вы указали в параметре URL обратного вызова GitHub Authorization.

Кроме того, я думаю, что вам нужно будет изменить github.successRedirect установка быть http://my-ec2-instance.compute.amazonaws.com:3030/redirect при работе на сервере EC2, потому что значение по умолчанию, которое вы настроили localhost определенно не будет работать, когда он работает на EC2.

Другие вопросы по тегам