我正在尝试在NGINX服务器上配置lua-resty-openidc
。用户通过身份验证后,如何重定向回主页?当用户通过身份验证时,回调URL将从服务器获取代码,session_state和其他参数。一旦用户通过身份验证,这会导致加载问题。
用户返回的网址类似于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,
}
答案 0 :(得分:2)
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并最终重定向回原始网址,请参阅https://github.com/pingidentity/lua-resty-openidc/blob/master/lib/resty/openidc.lua#L350
重定向URI本身可以是任何路径,只要它不需要提供内容,因为lua-resty-openidc将拦截它并做自己的事情。它确实需要在提供商处注册。
答案 1 :(得分:1)
重定向由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
块。它允许在重定向到主页(&#34; /&#34;路径)之前执行一些代码。
答案 2 :(得分:0)
试试这个模块 - github.com/tarachandverma/nginx-openidc 该模块非常易于使用xml语法进行配置,并为简单xml配置中的重定向提供了广泛的支持,可以在不重新启动nginx webserver的情况下进行更新。