使用支持IP白名单的基本身份验证机制隐藏Django站点。
django-basic-auth-ip-whitelist的Python项目详细描述
这个简单的包提供了中间件,允许您设置基本身份验证 以及通过django设置的ip白名单。
用例
此包是为需要 完全隐藏在Internet的密码后面或只能访问 某些IP网络。
要求
- Django 1.8、1.9、1.10、1.11、2.0、2.1或2.2。
- python 3.4、3.5、3.6或3.7
配置
在django设置中,您可以配置以下设置:
BASIC_AUTH_LOGIN和BASIC_AUTH_PASSWORD
要用于基本身份验证的凭据。
BASIC_AUTH_WHITELISTED_IP_NETWORKS
设置与python兼容的网络范围(字符串)列表 ipaddress.ip_network 您希望能够访问网站而无需验证 从。它必须是由逗号分隔的网络字符串,或者 Python可食。
BASIC_AUTH_REALM
指定默认响应领域的字符串。
示例设置
MIDDLEWARE+=['baipw.middleware.BasicAuthIPWhitelistMiddleware']BASIC_AUTH_LOGIN='somelogin'BASIC_AUTH_PASSWORD='greatpassword'BASIC_AUTH_WHITELISTED_IP_NETWORKS=['192.168.0.0/28','2001:db00::0/24',]
高级定制
获取IP
如果您希望在获取IP时具有自定义行为,可以创建 将请求作为参数并指定其路径的自定义函数 在BASIC_AUTH_GET_CLIENT_IP_FUNCTION设置中,例如
BASIC_AUTH_GET_CLIENT_IP_FUNCTION='utils.ip.get_client_ip'
BASIC_AUTH_WHITELISTED_HTTP_HOSTS
设置网站将在没有基本服务的情况下打开的主机列表 身份验证。如果您的网站托管在多个域中,则此功能非常有用 你只希望其中一个能被公开,例如通过搜索引擎。
这绝对不是安全功能。请不要用来保护您的 站点。
BASIC_AUTH_WHITELISTED_HTTP_HOSTS=['your-public-domain.com',]
BASIC_AUTH_WHITELISTED_PATHS
设置网站将在没有基本身份验证的情况下提供的路径列表。 这可用于支持API集成,例如与第三方集成 不支持基本身份验证的服务。
设置BASIC_AUTH_WHITELISTED_PATHS中列出的路径被视为根路径,任何子路径也将被白名单。例如:
BASIC_AUTH_WHITELISTED_PATHS=['/api',]
这将打开路径https://mydomain.com/api/,以及任何 在它下面,例如https://mydomain.com/api/document/1/。
BASIC_AUTH_RESPONSE_TEMPLATE
如果你想在401页上显示不同的模板,请使用这个 设置为指向模板。
BASIC_AUTH_RESPONSE_TEMPLATE='401.html'
BASIC_AUTH_RESPONSE_CLASS
如果要指定自定义响应类,可以使用此设置执行此操作。 以字符串形式提供路径。
BASIC_AUTH_RESPONSE_CLASS='yourmodule.response.CustomUnathorisedResponse'
跳过中间件
您可以通过设置跳过中间件 跳过基本验证IP白名单中间件检查请求的属性 正确。
setattr(request,'_skip_basic_auth_ip_whitelist_middleware_check',True)
如果您有其他想要的中间件,这可能很方便 共存不同的中间件,限制访问网站。