Skip to content

Commit

Permalink
proxy+auth: fix post request
Browse files Browse the repository at this point in the history
  • Loading branch information
guggero committed Oct 24, 2023
1 parent 7f1411c commit a5a24d7
Show file tree
Hide file tree
Showing 5 changed files with 10 additions and 13 deletions.
6 changes: 3 additions & 3 deletions auth/authenticator.go
Original file line number Diff line number Diff line change
Expand Up @@ -75,8 +75,8 @@ func (l *LsatAuthenticator) Accept(header *http.Header, serviceName string) bool
// complete.
//
// NOTE: This is part of the Authenticator interface.
func (l *LsatAuthenticator) FreshChallengeHeader(r *http.Request,
serviceName string, servicePrice int64) (http.Header, error) {
func (l *LsatAuthenticator) FreshChallengeHeader(serviceName string,
servicePrice int64) (http.Header, error) {

service := lsat.Service{
Name: serviceName,
Expand All @@ -97,7 +97,7 @@ func (l *LsatAuthenticator) FreshChallengeHeader(r *http.Request,

str := fmt.Sprintf("LSAT macaroon=\"%s\", invoice=\"%s\"",
base64.StdEncoding.EncodeToString(macBytes), paymentRequest)
header := r.Header
header := http.Header{}
header.Set("WWW-Authenticate", str)

log.Debugf("Created new challenge header: [%s]", str)
Expand Down
2 changes: 1 addition & 1 deletion auth/interface.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ type Authenticator interface {

// FreshChallengeHeader returns a header containing a challenge for the
// user to complete.
FreshChallengeHeader(*http.Request, string, int64) (http.Header, error)
FreshChallengeHeader(string, int64) (http.Header, error)
}

// Minter is an entity that is able to mint and verify LSATs for a set of
Expand Down
6 changes: 3 additions & 3 deletions auth/mock_authenticator.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,10 @@ func (a MockAuthenticator) Accept(header *http.Header, _ string) bool {

// FreshChallengeHeader returns a header containing a challenge for the user to
// complete.
func (a MockAuthenticator) FreshChallengeHeader(r *http.Request,
_ string, _ int64) (http.Header, error) {
func (a MockAuthenticator) FreshChallengeHeader(string, int64) (http.Header,
error) {

header := r.Header
header := http.Header{}
header.Set(
"WWW-Authenticate", "LSAT macaroon=\"AGIAJEemVQUTEyNCR0exk7ek9"+
"0Cg==\", invoice=\"lnbc1500n1pw5kjhmpp5fu6xhthlt2vucm"+
Expand Down
5 changes: 2 additions & 3 deletions proxy/proxy.go
Original file line number Diff line number Diff line change
Expand Up @@ -398,10 +398,8 @@ func addCorsHeaders(header http.Header) {
func (p *Proxy) handlePaymentRequired(w http.ResponseWriter, r *http.Request,
serviceName string, servicePrice int64) {

addCorsHeaders(r.Header)

header, err := p.authenticator.FreshChallengeHeader(
r, serviceName, servicePrice,
serviceName, servicePrice,
)
if err != nil {
log.Errorf("Error creating new challenge header: %v", err)
Expand All @@ -412,6 +410,7 @@ func (p *Proxy) handlePaymentRequired(w http.ResponseWriter, r *http.Request,
return
}

addCorsHeaders(header)
for name, value := range header {
w.Header().Set(name, value[0])
for i := 1; i < len(value); i++ {
Expand Down
4 changes: 1 addition & 3 deletions proxy/proxy_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -313,9 +313,7 @@ func runGRPCTest(t *testing.T, tc *testCase) {

// We expect the WWW-Authenticate header field to be set to an LSAT
// auth response.
expectedHeaderContent, _ := mockAuth.FreshChallengeHeader(&http.Request{
Header: map[string][]string{},
}, "", 0)
expectedHeaderContent, _ := mockAuth.FreshChallengeHeader("", 0)
capturedHeader := captureMetadata.Get("WWW-Authenticate")
require.Len(t, capturedHeader, 1)
require.Equal(
Expand Down

0 comments on commit a5a24d7

Please sign in to comment.