refactor URI scheme for basicfile auth provider
This commit is contained in:
parent
37de152341
commit
5f36d7ed52
|
@ -68,7 +68,8 @@ Authentication parameters are passed as URI via `-auth` parameter. Scheme of URI
|
||||||
* `username` - login.
|
* `username` - login.
|
||||||
* `password` - password.
|
* `password` - password.
|
||||||
* `hidden_domain` - if specified and is not an empty string, proxy will respond with "407 Proxy Authentication Required" only on specified domain. All unauthenticated clients will receive "400 Bad Request" status. This option is useful to prevent DPI active probing from discovering that service is a proxy, hiding proxy authentication prompt when no valid auth header was provided. Hidden domain is used for generating 407 response code to trigger browser authorization request in cases when browser has no prior knowledge proxy authentication is required. In such cases user has to navigate to any hidden domain page via plaintext HTTP, authenticate themselves and then browser will remember authentication.
|
* `hidden_domain` - if specified and is not an empty string, proxy will respond with "407 Proxy Authentication Required" only on specified domain. All unauthenticated clients will receive "400 Bad Request" status. This option is useful to prevent DPI active probing from discovering that service is a proxy, hiding proxy authentication prompt when no valid auth header was provided. Hidden domain is used for generating 407 response code to trigger browser authorization request in cases when browser has no prior knowledge proxy authentication is required. In such cases user has to navigate to any hidden domain page via plaintext HTTP, authenticate themselves and then browser will remember authentication.
|
||||||
* `basicfile` - use htpasswd-like file with login and password pairs for authentication. Such file can be created/updated like this: `touch /etc/dumbproxy.htpasswd && htpasswd -bBC 10 /etc/dumbproxy.htpasswd username password`. Path in URL for this provider must point to a local file with login and bcrypt-hashed password lines. Example: `basicfile:///etc/dumbproxy.htpasswd`.
|
* `basicfile` - use htpasswd-like file with login and password pairs for authentication. Such file can be created/updated like this: `touch /etc/dumbproxy.htpasswd && htpasswd -bBC 10 /etc/dumbproxy.htpasswd username password`. `path` parameter in URL for this provider must point to a local file with login and bcrypt-hashed password lines. Example: `basicfile://?path=/etc/dumbproxy.htpasswd`.
|
||||||
|
* `path` - location of file with login and password pairs. File format is similar to htpasswd files. Each line must be in form `<username>:<bcrypt hash of password>`. Empty lines and lines starting with `#` are ignored.
|
||||||
* `hidden_domain` - same as in `static` provider
|
* `hidden_domain` - same as in `static` provider
|
||||||
|
|
||||||
## Synopsis
|
## Synopsis
|
||||||
|
|
5
auth.go
5
auth.go
|
@ -81,11 +81,14 @@ type BasicAuth struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewBasicFileAuth(param_url *url.URL) (*BasicAuth, error) {
|
func NewBasicFileAuth(param_url *url.URL) (*BasicAuth, error) {
|
||||||
filename := param_url.Path
|
|
||||||
values, err := url.ParseQuery(param_url.RawQuery)
|
values, err := url.ParseQuery(param_url.RawQuery)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
filename := values.Get("path")
|
||||||
|
if filename == "" {
|
||||||
|
return nil, errors.New("\"path\" parameter is missing from auth config URI")
|
||||||
|
}
|
||||||
|
|
||||||
f, err := os.Open(filename)
|
f, err := os.Open(filename)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
Loading…
Reference in New Issue