1

您好,我想配置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>

现在有了这个配置,一切都OK了。当我进入我的站点时,apache 将我重定向到 OP 登录页面。我有 3 种身份验证机制,我的提供商决定必须加载哪个登录页面,这取决于请求中的参数acr_values和显示语言。ui_locales为此,我应该将此参数传递给 auth requset url。但mod_auth_openidc我做不到。我可以OIDCAuthRequestParams静态设置,但这不能解决我的问题,因为登录机制和语言取决于用户的选择。

我阅读了此文档并使用以下链接。但它不起作用。我不知道可能是我误解了什么。

[my_site]?target_link_uri=[my_site/mypage.html]&iss=[my_provider]&auth_request_params=[urlencoded-query-string]

那是错的吗?如何传递动态acr_valuesui_locales以便 apache 使用这些查询参数生成身份验证请求

4

1 回答 1

0

您可以通过重定向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 版本

于 2017-10-25T20:16:32.993 回答