O problema com vários tipos de autenticação é que eles tendem a ter protocolos irreconciliáveis. Você pode tentar a técnica mostrada na documentação do Shibboleth , onde você coloca tudo em um subdiretório, criar um link simbólico para esse diretório para cada tipo de autenticação que você deseja suportar, configure cada local de ligação simbólica para um tipo de autenticação diferente.
<Location /basic>
AuthType Basic
AuthUserFile /path/to/.htpasswd
require valid-user
</Location>
<Location /cas>
AuthType CAS
require valid-user
</Location>
<Location /openid>
AuthOpenIDEnabled On
require valid-user
</Location>