mirror of https://github.com/grafana/grafana.git
				
				
				
			
		
			
				
	
	
		
			20 lines
		
	
	
		
			678 B
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			20 lines
		
	
	
		
			678 B
		
	
	
	
		
			Go
		
	
	
	
| package api
 | |
| 
 | |
| import (
 | |
| 	"crypto/subtle"
 | |
| 	"net/http"
 | |
| )
 | |
| 
 | |
| // BasicAuthenticatedRequest parses the provided HTTP request for basic authentication credentials
 | |
| // and returns true if the provided credentials match the expected username and password.
 | |
| // Returns false if the request is unauthenticated.
 | |
| // Uses constant-time comparison in order to mitigate timing attacks.
 | |
| func BasicAuthenticatedRequest(req *http.Request, expectedUser, expectedPass string) bool {
 | |
| 	user, pass, ok := req.BasicAuth()
 | |
| 	if !ok || subtle.ConstantTimeCompare([]byte(user), []byte(expectedUser)) != 1 || subtle.ConstantTimeCompare([]byte(pass), []byte(expectedPass)) != 1 {
 | |
| 		return false
 | |
| 	}
 | |
| 
 | |
| 	return true
 | |
| }
 |