apache 授权请求的动态查询参数

cfh9epnr  于 2023-05-23  发布在  Apache
关注(0)|答案(1)|浏览(217)

你好我想配置apache2服务器重定向未经授权的用户到我的提供商登录页面,如googlegluu等。我使用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 webmaster@localhost

        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参数的显示语言。要做到这一点,我应该通过这个参数到授权请求的网址。但是mod_auth_openidc我做不到。我可以静态设置OIDCAuthRequestParams,但这并不能解决我的问题,因为登录机制和语言取决于用户的选择。
我阅读了这个文档并使用下面的链接。但它不起作用。我不知道,也许我误解了什么。
[my_网站]?target_link_uri=[my_site/mypage.html]&iss=[my_provider]&auth_request_params=[urlencoded-query-string]
这样不对吗如何传递动态acr_valuesui_locales,以便apache使用这些查询参数生成auth请求

vsikbqxv

vsikbqxv1#

您可以通过重定向OIDCRedirectURI并提供auth_request_params参数以及target_link_uriiss来显式触发身份验证请求。例如:

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

相关问题