Openidc with Keycloak error uthenticate(): request to the redirect_uri_path 但没有找到会话状态,客户端

Posted

技术标签:

【中文标题】Openidc with Keycloak error uthenticate(): request to the redirect_uri_path 但没有找到会话状态,客户端【英文标题】:Openidc with Keycloak error uthenticate(): request to the redirect_uri_path but there's no session state found, client 【发布时间】:2018-08-26 13:31:03 【问题描述】:

我使用 Openresty 作为服务器。根据https://eclipsesource.com/blogs/2018/01/11/authenticating-reverse-proxy-with-keycloak/,我有 nginx 的配置文件。

我收到以下错误“openidc.lua:1053: authenticate(): request to the redirect_uri_path 但没有找到会话状态,客户端”

有人可以提出一些建议并尝试解决问题。

问候, 阿拉巴克什

【问题讨论】:

你能解决这个问题吗?我有同样的问题。 【参考方案1】:

您的重定向 URI 不得设置为 "/",而是设置为不应返回内容的任意路径(如 /redirect_uri)。这是一个由lua-resty-openidc处理的“虚荣”URL

【讨论】:

您好@Usman,我已将重定向 URI 作为您提到的虚 URL,但我仍然面临同样的问题。配置相同,keycloak 和使用 keycloak 保护的服务器位于不同的域中。任何建议 @AvikAggarwal 哪里可以解决这个问题?【参考方案2】:

我遇到了同样的问题,并且能够通过在服务器块中设置 $session_name 变量来解决它。示例:

server 
  ...
  server_name proxy.localhost;
  #lua_code_cache off;      
  set $session_name nginx_session;
  location /           
          access_by_lua_block 
            local opts = 
               redirect_uri = "http://proxy.localhost/cb",
               discovery = "http://127.0.0.1:9000/.well-known/openid-configuration",
               client_id = "proxyclient-id",
               client_secret = "secret",
               ssl_verify = "no",
               scope = "openid"
            
            -- call authenticate for OpenID Connect user authentication
            local res, err = require("resty.openidc").authenticate(opts)

            if err then
              ngx.status = 500
              ngx.say(err)
              ngx.exit(ngx.HTTP_INTERNAL_SERVER_ERROR)
            end

            ngx.req.set_header("X-USER", res.id_token.sub)
          

          proxy_pass http://localhost:8080/;
          proxy_set_header x-forwarded-proto $scheme;
        

另外需要注意的是 lua_code_cache off 指令;它可能会中断会话。见:https://github.com/bungle/lua-resty-session#notes-about-turning-lua-code-cache-off

【讨论】:

以上是关于Openidc with Keycloak error uthenticate(): request to the redirect_uri_path 但没有找到会话状态,客户端的主要内容,如果未能解决你的问题,请参考以下文章

Keycloak docker HTTPS-REQUIRED with nginx ssl

Prisma with Next-Auth,用户创建失败导致Keycloak的api响应键名

Keycloak + Spring Cloud Gateway + 认证授权

Dokku keycloak 重定向过多

无法加载模块/mod_auth_openidc.so:找不到指定的模块

无法加载模块/mod_auth_openidc.so:找不到指定的模块