3

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']; ?>但我没有得到任何返回的变量。

谢谢艺术

4

1 回答 1

2

在默认设置中,email声明可作为环境变量使用:

echo $_SERVER['OIDC_CLAIM_email']

并作为 HTTP 标头:

$hdrs = apache_request_headers();
echo $hdrs['OIDC_CLAIM_email'];

REMOTE_USER变量可通过以下方式访问:

$_SERVER['REMOTE_USER'];

并且默认情况下将设置为全局唯一标识符,但可以通过OIDCRemoteUserClaim您显示的指令进行配置。关于设置的几点说明:

  1. 您会注意到 HTTP 标头也可以在环境变量中使用,它们的变量名称带有前缀HTTP_和大写,例如
    $_SERVER['HTTP_OIDC_CLAIM_EMAIL'];

  2. 您可以通过各种配置指令配置围绕在标头和/或环境变量中传递声明的行为

  3. 当然,只有当相关声明存在于用户信息端点中id_token或从用户信息端点返回时,变量才会存在

于 2016-09-06T18:22:04.407 回答