问题描述
我正在使用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 (将#修改为@)