Соединение 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"
}
РЕДАКТИРОВАТЬ: изменил 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.