Как мне перенаправить обратно на домашнюю страницу после аутентификации
Я пытаюсь настроить lua-resty-openidc
на сервере NGINX. Как я могу перенаправить обратно на домашнюю страницу после аутентификации пользователя? Когда пользователь аутентифицирован, URL обратного вызова получает код, session_state и другие параметры с сервера. Это вызывает проблему с загрузкой после аутентификации пользователя. URL, к которому возвращается пользователь, - это что-то вроде http://xyz.abc.com:8080/secured?code=32edkew2kjjjdf
https://github.com/pingidentity/lua-resty-openidc
Моя конфигурация выглядит как ниже. Я хотел вернуть пользователя в http://xyz.abc.com:8080
, Каким должен быть redirect_uri?
local opts = {
-- the full redirect URI must be protected by this script and becomes:
-- ngx.var.scheme.."://"..ngx.var.http_host..opts.redirect_uri_path
redirect_uri_path = "/secured",
discovery = "https://accounts.google.com/.well-known/openid-configuration",
client_id = "<client_id",
client_secret = "<client_secret"
--authorization_params = { hd="pingidentity.com" },
--scope = "openid email profile",
--iat_slack = 600,
}
3 ответа
lua-resty-openidc
сам обрабатывает перенаправление на исходную страницу, к которой вы пытались получить доступ. Вам не нужно делать что-то конкретное для этого, он определит этот URL при запуске аутентификации, см.: https://github.com/pingidentity/lua-resty-openidc/blob/master/lib/resty/openidc.lua#L539 и сохраните его в сеансе.
Он будет перехватывать перенаправление обратно на URI перенаправления, см. https://github.com/pingidentity/lua-resty-openidc/blob/master/lib/resty/openidc.lua#L557 и в конечном итоге перенаправлять обратно на исходный URL см. https://github.com/pingidentity/lua-resty-openidc/blob/master/lib/resty/openidc.lua#L350
Сам по себе URI перенаправления может быть любым путем, если ему не нужно обслуживать контент, поскольку lua-resty-openidc будет перехватывать его и делать свое дело. Это необходимо зарегистрировать у провайдера.
Перенаправление определяется redirect_uri_path
вариант. Вы положили /secured
в этом поле, так что вы получите перенаправление на http://xyz.abc.com:8080/secured?...
, Если вы хотите перенаправление на /
можно поставить redirect_uri_path = "/"
в ваших вариантах.
Но это может быть не очень хорошим решением, так как вы, вероятно, захотите выполнить некоторую обработку перед перенаправлением на домашнюю страницу. Следующая часть nginx.conf
мог бы ответить на вашу проблему:
location "=/secured" {
access_by_lua_block {
... -- perform some handling
return ngx.redirect "/"
}
}
это location
блок определен для /secured
дорожка. Это позволяет выполнить некоторый код перед перенаправлением на домашнюю страницу (путь "/").
Попробуйте этот модуль - github.com/tarachandverma/nginx-openidc. Этот модуль очень прост в настройке с использованием синтаксиса xml и обеспечивает расширенную поддержку перенаправлений в простой конфигурации xml, которую можно обновлять, даже не перезапуская веб-сервер nginx.