Help us shape the future of Go! Take the 2026 Go Developer Survey

digest

package module
v1.0.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 16, 2023 License: Apache-2.0 Imports: 10 Imported by: 91

README

Go Reference GO tests golangci-lint

Golang HTTP Digest Authentication

Overview

This is a fork of the (unmaintained) code.google.com/p/mlab-ns2/gae/ns/digest package. There's a descriptor leak in the original package, so this fork was created to patch the leak.

Update 2020

This is a fork of the now unmaintained fork of digest. This implementation now supports the SHA-256 algorithm which was added as part of rfc 7616.

Usage

t := NewTransport("myUserName", "myP@55w0rd")
req, err := http.NewRequest("GET", "http://notreal.com/path?arg=1", nil)
if err != nil {
	return err
}
resp, err := t.RoundTrip(req)
if err != nil {
	return err
}

Or it can be used as a client:

c, err := t.Client()
if err != nil {
	return err
}
resp, err := c.Get("http://notreal.com/path?arg=1")
if err != nil {
	return err
}

Contributing

Contributions are welcome!

The code is linted with golangci-lint. This library also defines git hooks that format and lint the code.

Before submitting a PR, please run make setup link-git-hooks to set up your local development environment.

Original Authors

License

Apache 2.0

Documentation

Index

Constants

View Source
const (
	MsgAuth   string = "auth"
	AlgMD5    string = "MD5"
	AlgSha256 string = "SHA-256"
)

Variables

View Source
var (
	ErrNilTransport      = errors.New("transport is nil")
	ErrBadChallenge      = errors.New("challenge is bad")
	ErrAlgNotImplemented = errors.New("alg not implemented")
)

Functions

This section is empty.

Types

type Transport

type Transport struct {
	Username  string
	Password  string
	Transport http.RoundTripper
}

Transport is an implementation of http.RoundTripper that takes care of http digest authentication.

func NewTransport

func NewTransport(username, password string) *Transport

NewTransport creates a new digest transport using the http.DefaultTransport.

func NewTransportWithHTTPTransport added in v1.0.5

func NewTransportWithHTTPTransport(username, password string, transport *http.Transport) *Transport

NewTransportWithHTTPTransport creates a new digest transport using the supplied http.Transport.

func (*Transport) Client

func (t *Transport) Client() (*http.Client, error)

Client returns an HTTP client that uses the digest transport.

func (*Transport) RoundTrip

func (t *Transport) RoundTrip(req *http.Request) (*http.Response, error)

RoundTrip makes a request expecting a 401 response that will require digest authentication. It creates the credentials it needs and makes a follow-up request.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL