svchost/auth: token-based HostCredentials
This is the only credentials type we support right now, which just sends an opaque token via the "Bearer" HTTP auth scheme.
This commit is contained in:
parent
3c65b5dd61
commit
43a3357473
|
@ -0,0 +1,20 @@
|
|||
package auth
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
)
|
||||
|
||||
// HostCredentialsToken is a HostCredentials implementation that represents a
|
||||
// single "bearer token", to be sent to the server via an Authorization header
|
||||
// with the auth type set to "Bearer"
|
||||
type HostCredentialsToken string
|
||||
|
||||
// PrepareRequest alters the given HTTP request by setting its Authorization
|
||||
// header to the string "Bearer " followed by the encapsulated authentication
|
||||
// token.
|
||||
func (tc HostCredentialsToken) PrepareRequest(req *http.Request) {
|
||||
if req.Header == nil {
|
||||
req.Header = http.Header{}
|
||||
}
|
||||
req.Header.Set("Authorization", "Bearer "+string(tc))
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
package auth
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestHostCredentialsToken(t *testing.T) {
|
||||
creds := HostCredentialsToken("foo-bar")
|
||||
req := &http.Request{}
|
||||
|
||||
creds.PrepareRequest(req)
|
||||
|
||||
authStr := req.Header.Get("authorization")
|
||||
if got, want := authStr, "Bearer foo-bar"; got != want {
|
||||
t.Errorf("wrong Authorization header value %q; want %q", got, want)
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue