在基本身份验证中将HTTP重定向到HTTPS的关键作用是什么?

时间:2017-04-14 10:26:07

标签: apache .htaccess xampp virtualhost

我在ColdFusion 11中使用apache web服务器在windows托管中工作我对基本身份验证没有更多的了解,所以我对此有点混淆

  1. 为什么基本身份验证类型存储密码 .htpasswd文件如此           没必要存储数据库?
  2. 如何在进入之前将请求HTTP重定向到https 密码               提示?
  3. .htaccess文件代码工作正常首先完全验证然后这个重定向HTTP到https但是我想在输入密码之前将HTTP设置为https我的httpd.config文件虚拟主机代码

    <VirtualHost  112.192.12.16>
        DocumentRoot C:/Apache24/htdocs/enovis53
        ServerName test.example.com
        ErrorLog logs/enovis-inc.com-error_log
        CustomLog logs/enovis-inc.com-access_log common
    </VirtualHost>
    

    我的.htaccess文件代码

    AuthName "Example CLMS Production (v5.3.0.0)"
    
    AuthType Basic
    AuthUserFile "C:\Apache24\htdocs\enovis53\.htpasswd"
    require valid-user
    

    如果有人知道这一点然后指导我我不知道这是正确的事情要求社区所有建议都可以提前感谢

1 个答案:

答案 0 :(得分:1)

  
      
  1. 为什么基本身份验证类型会在.htpasswd文件中存储密码,因此不需要存储数据库?
  2.   

这由AuthBasicProvider

决定
  

语法:AuthBasicProvider provider-name [provider-name] ...
  默认值:AuthBasicProvider文件

     

AuthBasicProvider指令设置用于对此位置的用户进行身份验证的提供程序。默认文件提供程序由mod_authn_file模块实现。

因此,在您的情况下,未定义任何提供程序,并应用默认(文件)。如果您想要其他提供商,例如一些数据库,指定dbmldap,...

  
      
  1. 如何在输入密码提示之前将请求HTTP重定向到https?
  2.   

通常,无条件地应用某些指令,除非以某种方式限制。要仅在HTTPS处于活动状态时请求密码,您可以尝试将Auth指令或至少Require括在If

<If "%{HTTPS} == 'on'">
    AuthName "Example CLMS Production (v5.3.0.0)"
    AuthType Basic
    AuthUserFile "C:\Apache24\htdocs\enovis53\.htpasswd"
    require valid-user
</If>

但现在,当通过http://test.example.com请求时,所有内容都可以在没有密码的情况下访问。不要忘记强制https

不相关,但请注意AuthUserFile

的安全警告
  

安全

     

确保AuthUserFile存储在Web服务器的文档树之外。不要将它放在它保护的目录中。否则,客户端可能能够下载AuthUserFile。