2016-09-06 51 views
2

我有mod_auth_openidccentos7上工作,但無法找到引用如何提取傳遞的用戶信息的文檔。mod_auth_openidc如何訪問在PHP中使用的用戶變量

我的日誌顯示該模塊執行以下審訊

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指令進行配置。有關安裝的一些言論:

  1. 你會注意到,HTTP頭也可在環境變量可用,用自己的變量名前綴HTTP_和如大寫的
    $_SERVER['HTTP_OIDC_CLAIM_EMAIL'];

  2. 可以配置圍繞傳遞報頭和/或環境變量的權利要求通過各種配置指令的行爲

  3. 如果相關聯的權利要求是存在於id_token或返回的變量將當然只存在從用戶信息端點

+0

你的答案使用'SESSION',而不是'SERVER'向我指出我的基本的錯誤,但'提示OIDC_CLAIM_ *'會的方式改變我們的架構簡體闡明過程。感謝您的詳細解答 –