如何在身份验证后重定向回主页

时间:2017-03-21 23:36:23

标签: nginx lua openresty lua-resty-openidc

我正在尝试在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,
          }

3 个答案:

答案 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的情况下进行更新。