2

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

3 回答 3

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并最终重定向回原始 URL ,见https://github.com/pingidentity/lua-resty-openidc/blob/master/lib/resty/openidc.lua#L350

重定向 URI 本身可以是任何路径,只要它不需要提供内容,因为 lua-resty-openidc 会拦截它并做自己的事情。它确实需要向 Provider 注册。

于 2017-03-23T12:27:31.790 回答
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路径定义的。它允许在重定向到主页(“/”路径)之前执行一些代码。

于 2017-03-22T11:01:24.943 回答
0

试试这个模块 - github.com/tarachandverma/nginx-openidc 这个模块很容易在 xml 语法中配置,并为简单的 xml 配置中的重定向提供广泛的支持,无需重新启动 nginx 网络服务器即可更新。

于 2017-12-25T15:59:47.793 回答