动态查询参数授权请求
问题描述:
你好,我想配置apache2
服务器未经授权的用户重定向到我的供应商登录页面,如google
,gluu
和等。我使用mod_auth_openidc
和下面的代码片断我default-ssl.conf
文件动态查询参数授权请求
<IfModule mod_ssl.c>
<VirtualHost _default_:8443>
OIDCProviderMetadataURL https://<my_provider>/.well-known/openid-configuration
OIDCClientID <client_code>
OIDCClientSecret <client_secret>
OIDCRedirectURI https://<my_site>:8443/cgi-bin/
#OIDCAuthRequestParams acr_values=auth_request_params
OIDCResponseType code
OIDCScope "openid profile email"
OIDCSSLValidateServer Off
OIDCCryptoPassphrase 123456
OIDCPassClaimsAs environment
OIDCClaimPrefix USERINFO_
OIDCPassIDTokenAs payload
<Location "/">
Require valid-user
AuthType openid-connect
</Location>
ServerAdmin [email protected]
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
</IfModule>
现在有了这个配置,一切都很好。当我进入我的网站时,apache将我重定向到OP登录页面。我有3种身份验证机制,我的提供商决定哪个登录页面必须加载取决于acr_values
以及来自请求的ui_locales
param的显示语言。为此,我应该将此参数传递给auth requset url。但用mod_auth_openidc
我做不到。我可以静态设置OIDCAuthRequestParams
,但这并不能解决我的问题,因为登录机制和语言取决于用户的选择。
我看了this documentation并使用下面的链接。但它不起作用。我不知道可能是我误解了一些东西。
[my_site] target_link_uri = [my_site /的mypage.html] & ISS = [my_provider] & auth_request_params = [url编码的查询字符串]
是不是错了?我怎样才能通过动态acr_values
和ui_locales
这样Apache产生这些查询的身份验证请求参数
答
您可以明确地通过重定向的OIDCRedirectURI
确实触发认证请求,并提供auth_request_params
参数与target_link_uri
和iss
在一起。例如。
https://<my_site>:8443/cgi-bin/?target_link_uri=[my_site/mypage.html]&iss=[my_provider]&auth_request_params=acr_values%3Dsome_acr%26ui_locales%3Den
当你使用它与单一供应商欧确实需要使用相对较新的mod_auth_openidc> = 2.3.0
版本