authmidware

package module
v0.0.0-...-51f7132 Latest Latest
Warning

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

Go to latest
Published: Jan 3, 2017 License: BSD-3-Clause Imports: 3 Imported by: 0

README

HTTP Authentication Middleware

Build Status GoDoc Coverage Status

Auth middleware provide HTTP Basic and HTTP Digest authentication for Gem Web framework.

Getting Started

Install

$ go get -u github.com/go-gem/middleware-auth

Example

package main

import (
	"github.com/abbot/go-http-auth"
	"github.com/go-gem/gem"
	"github.com/go-gem/middleware-auth"
)

var (
	salt     = []byte("salt")
	magic    = []byte("$1$")
	username = "foo"
	password = []byte("bar")
)

// basic auth middleware
var (
	basicPasswd = string(auth.MD5Crypt(password, salt, magic))

	basicAuthenticator = auth.NewBasicAuthenticator("", func(user, realm string) string {
		if user == username {
			return basicPasswd
		}
		return ""
	})

	basicAuth = authmidware.New(basicAuthenticator)
)

func basicHandle(ctx *gem.Context) {
	ctx.HTML(200, "hello "+basicAuth.Username(ctx))
}

// digest auth middleware
var (
	digestAuthenticator = auth.NewDigestAuthenticator("", func(user, realm string) string {
		if user == "foo" {
			// MD5(username:realm:password)
			return "e0a109b991367f513dfa73bbae05fb07"
		}
		return ""
	})

	digestAuth = authmidware.New(digestAuthenticator)
)

func digestHandle(ctx *gem.Context) {
	ctx.HTML(200, "hello "+digestAuth.Username(ctx))
}

func main() {
	router := gem.NewRouter()

	// basic auth
	router.GET("/basic", basicHandle, &gem.HandlerOption{
		Middlewares: []gem.Middleware{basicAuth},
	})

	// digest auth
	router.GET("/digest", digestHandle, &gem.HandlerOption{
		Middlewares: []gem.Middleware{digestAuth},
	})

	gem.ListenAndServe(":8080", router.Handler())
}

Documentation

Overview

Package authmidware provides HTTP Basic and HTTP Digest authentication for Gem Web framework.

This package depends on go-http-auth, more usages may be obtained on https://github.com/abbot/go-http-auth.

Example

package main

import (
	"github.com/abbot/go-http-auth"
	"github.com/go-gem/gem"
	"github.com/go-gem/middleware-auth"
)

var (
	salt     = []byte("salt")
	magic    = []byte("$1$")
	username = "foo"
	password = []byte("bar")
)

// basic auth middleware
var (
	basicPasswd = string(auth.MD5Crypt(password, salt, magic))

	basicAuthenticator = auth.NewBasicAuthenticator("", func(user, realm string) string {
		if user == username {
			return basicPasswd
		}
		return ""
	})

	basicAuth = authmidware.New(basicAuthenticator)
)

func basicHandle(ctx *gem.Context) {
	ctx.HTML(200, "hello "+basicAuth.Username(ctx))
}

// digest auth middleware
var (
	digestAuthenticator = auth.NewDigestAuthenticator("", func(user, realm string) string {
		if user == "foo" {
			// MD5(username:realm:password)
			return "e0a109b991367f513dfa73bbae05fb07"
		}
		return ""
	})

	digestAuth = authmidware.New(digestAuthenticator)
)

func digestHandle(ctx *gem.Context) {
	ctx.HTML(200, "hello "+digestAuth.Username(ctx))
}

func main() {
	router := gem.NewRouter()

	// basic auth
	router.GET("/basic", basicHandle, &gem.HandlerOption{
		Middlewares: []gem.Middleware{basicAuth},
	})

	// digest auth
	router.GET("/digest", digestHandle, &gem.HandlerOption{
		Middlewares: []gem.Middleware{digestAuth},
	})

	gem.ListenAndServe(":8080", router.Handler())
}

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Auth

type Auth struct {
	ContextKey string
	// contains filtered or unexported fields
}

Auth middleware.

func New

func New(authenticator Authenticator) *Auth

New returns an Auth middleware with the given authenticator.

func (*Auth) Username

func (m *Auth) Username(ctx *gem.Context) string

Username returns the username.

Returns empty string if it does not exist or not a valid name.

func (*Auth) Wrap

func (a *Auth) Wrap(next gem.Handler) gem.Handler

Wrap implements the middleware interface.

type Authenticator

type Authenticator interface {
	Wrap(wrapped auth.AuthenticatedHandlerFunc) http.HandlerFunc
}

Authenticator interface.

Jump to

Keyboard shortcuts

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