Rails mod_auth_openoidc:控制器中的OIDC_CLAIM_sub为空

问题描述

我正在使用Rails应用程序(在Rails 4,2上)使用mod_auth_openoidc。在应用程序控制器中,访问时的值ENV['OIDC_CLaim_sub']为空(需要用户标识)。我检查了oidc日志(如下所示),发现OIDC_CLaim_sub = <username>已在环境变量中设置,但是在应用程序控制器中访问时为空。

oidc logs

[auth_openidc:debug] [pid 24900] src/util.c(1419): [client 10.10.10.10:20028] oidc_util_set_header: setting header "OIDC_CLaim_sub: <username>"
[auth_openidc:debug] [pid 24900] src/util.c(1445): [client 10.10.10.10:20028] oidc_util_set_app_info: setting environment variable "OIDC_CLaim_sub: <username>"
controller logs

[INFO] (null):0 (null)(): (null): OIDC_CLaim_sub -,OIDC_CLaim_user_id -,OIDC_CLaim_iss -,request.env['REMOTE_USER'] - <username>@idp.example.com,ENV['USER'] -,ENV['REMOTE_USER'] -

下面是控制器代码

aplication_controller.rb

Rails.logger.info("
OIDC_CLaim_sub - #{ENV['OIDC_CLaim_sub']},OIDC_CLaim_user_id - #{ENV['OIDC_CLaim_user_id']},OIDC_CLaim_iss - #{ENV['OIDC_CLaim_iss']},request.env['REMOTE_USER'] - #{request.env['REMOTE_USER']},ENV['USER'] - #{ENV['USER']},ENV['REMOTE_USER'] - #{ENV['REMOTE_USER']}")

if ENV['OIDC_CLaim_sub']
  @remote_user = ENV['OIDC_CLaim_sub']
else
  @remote_user = request.env['REMOTE_USER'].chomp('@example.com')
end

为什么OIDC_CLaim_* env值虽然是由mod_auth_openoidc添加的,但在控制器中不可用?有关如何解决此问题或调试的任何建议都是有帮助的。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)