mod_auth_openidc 如何访问用户变量以在 PHP 中使用
Posted
技术标签:
【中文标题】mod_auth_openidc 如何访问用户变量以在 PHP 中使用【英文标题】:mod_auth_openidc how to access user variables for use in PHP 【发布时间】:2017-01-14 03:06:28 【问题描述】:我有 mod_auth_openidc
在处理 centos7
但找不到参考如何提取传递的用户信息的文档。
我的日志显示该模块正在执行以下询问
oidc_authz_match_claim: evaluating key "nickname"
oidc_authz_match_claim: evaluating key "email"
oidc_authz_match_claim: evaluating key "user_id"
oidc_authz_match_claim: evaluating key "identities"
oidc_authz_match_claim: evaluating key "iat"
oidc_authz_match_claim: evaluating key "picture"
oidc_authz_match_claim: evaluating key "last_password_reset"
oidc_authz_match_claim: evaluating key "name"
oidc_authz_match_claim: evaluating key "created_at"
oidc_authz_match_claim: evaluating key "app_metadata"
oidc_authz_match_claim: evaluating key "email_verified"
oidc_authz_match_claim: evaluating key "clientID"
oidc_authz_match_claim: evaluating key "folders"
我已尝试在 httpd.conf 中设置以下两项
OIDCRemoteUserClaim email
OIDCOAuthRemoteUserClaim email
然后使用<?php echo $_SESSION['REMOTE_USER']; ?>
,但我没有得到任何返回的变量。
谢谢 艺术
【问题讨论】:
【参考方案1】:在默认设置中,email
声明可用作环境变量:
echo $_SERVER['OIDC_CLAIM_email']
并作为 HTTP 标头:
$hdrs = apache_request_headers();
echo $hdrs['OIDC_CLAIM_email'];
REMOTE_USER
变量可通过以下方式访问:
$_SERVER['REMOTE_USER'];
并且默认情况下将设置为全局唯一标识符,但可以通过OIDCRemoteUserClaim
指令进行配置,如您所示。关于设置的几点说明:
-
1234563
您可以通过各种配置指令配置围绕在标头和/或环境变量中传递声明的行为
当然,只有当相关声明存在于 id_token
中或从用户信息端点返回时,变量才会存在
【讨论】:
您的回答指出了我使用SESSION
而不是SERVER
的基本错误,但OIDC_CLAIM_*
上的提示将改变我们架构的方法以简化流程。感谢您的详细回答以上是关于mod_auth_openidc 如何访问用户变量以在 PHP 中使用的主要内容,如果未能解决你的问题,请参考以下文章
无法加载模块/mod_auth_openidc.so:找不到指定的模块
如何从 UserControl 访问 WPF 页面中的公共变量?
我们使用访问修饰符来限制用户对受保护/私有变量的访问,但用户怎么可能尝试访问它们呢?
从 React Native 中访问“用户定义的”xcode 变量