как решить проблему порта между герою и октой? - PullRequest
0 голосов
/ 17 апреля 2020

У меня есть приложение nodejs, которое использует сервисы okta для аутентификации.

Приложение, которое я тестировал локально на моем p c, и оно работает нормально, оно начинает прослушивать порт 3000:

const port = process.env.PORT || 3000
app.listen(port, () => console.log(`App listening on port ${port}`))

Пока все хорошо.
Следующим шагом я развернул приложение на heroku, но - к сожалению - оно не работает ...
Я проверил файл журнала и нашел виновника: кажется, герою игнорирует порт, который я установил в своем файле .env на 3000, и он использует (случайное?) значение для порта, 16709, например:

2020-04-17T09: 51: 40.261031+ 00:00 app [web.1]: приложение прослушивает порт 16709

Это объясняет, почему аутентификация не проходит.
Как я вижу в настройках okta, определенно ожидается порт 3000:

Login redirect URIs : http://localhost:3000/authorization-code/callback 

Так что я застрял ... Я искал stackoverflow и нашел это: Как войти в систему с помощью okta oauth в новом приложении heroku , но, к сожалению, ответа нет: (

Пожалуйста, кто-нибудь знает, как уменьшить / решить эту проблему порта между герою и октой?


* 102 5 * Обновление :
Я попробовал предложения из ответа и комментариев ниже, но все равно не работает ...
Что я получаю от okta auth:

" ошибка 400, неверный запрос. Ваш запрос привел к ошибке. Идентичный провайдер: неизвестен. Код ошибки: invalid_request. "

А вот несколько журналов от okta:

Результат

Reason mismatched_redirect_uri
Result FAILURE

Серьезность WARN System

DebugContext
    DebugData
        AuthCode <removed by me>
        AuthorizationServer <removed by me>
        AuthorizationServerName default
        ClientAuthType client_secret_basic
        GrantType authorization_code
        GrantedScopes
        RedirectUri https://my_app.herokuapp.com//authorization-code/callback
        RequestId <removed by me>
        RequestUri /oauth2/default/v1/token
        RequestedScopes
        ThreatSuspected false
        Url /oauth2/default/v1/token?
LegacyEventType app.oauth2.as.token.grant_failure

Ответы [ 2 ]

1 голос
/ 22 апреля 2020

Что ж, проверяя ваши журналы okta, кажется, что у вас есть дополнительный "/" в вашем URL перенаправления.
Это определенно главная причина сбоя " mismatched_redirect_uri ".

Пожалуйста, измените это (примечание: double-sla sh до authorization-code):

RedirectUri = https://my_app.herokuapp.com//authorization-code/callback

с этим (примечание: single-sla sh до authorization-code):

RedirectUri = https://my_app.herokuapp.com/authorization-code/callback

После вышеуказанного исправления просто попробуйте повторить все тесты (login, auth, et c).
Я на 99% уверен, что это решит вашу проблему.

1 голос
/ 17 апреля 2020

приложение Heroku устанавливает случайный порт для себя, но выставляет ваше приложение для публикации c на стандартном порту https (443). Итак, если у вас есть приложение на heroku под названием: nodejs -okta, общедоступный URL-адрес будет:

https://nodejs-okta.herokuapp.com

Вам нужно будет внесите в этот список белый URL-адрес в настройках приложения okta, чтобы перенаправление работало корректно:

https://nodejs-okta.herokuapp.com/authorization-code/callback

Примечание. Я работаю в команде защиты Okta

...