...

Package ntlmssp

import "github.com/Azure/go-ntlmssp"
Overview
Index

Overview ▾

Package ntlmssp provides NTLM/Negotiate authentication over HTTP

Protocol details from https://msdn.microsoft.com/en-us/library/cc236621.aspx, implementation hints from http://davenport.sourceforge.net/ntlm.html . This package only implements authentication, no key exchange or encryption. It only supports Unicode (UTF16LE) encoding of protocol strings, no OEM encoding. This package implements NTLMv2.

func GetDomain

func GetDomain(user string) (string, string, bool)

GetDomain : parse domain name from based on slashes in the input Need to check for upn as well

func NewNegotiateMessage

func NewNegotiateMessage(domainName, workstationName string) ([]byte, error)

NewNegotiateMessage creates a new NEGOTIATE message with the flags that this package supports.

func ProcessChallenge

func ProcessChallenge(challengeMessageData []byte, user, password string, domainNeeded bool) ([]byte, error)

ProcessChallenge crafts an AUTHENTICATE message in response to the CHALLENGE message that was received from the server

func ProcessChallengeWithHash

func ProcessChallengeWithHash(challengeMessageData []byte, user, hash string) ([]byte, error)

type Negotiator

Negotiator is a http.Roundtripper decorator that automatically converts basic authentication to NTLM/Negotiate authentication when appropriate.

type Negotiator struct{ http.RoundTripper }

func (Negotiator) RoundTrip

func (l Negotiator) RoundTrip(req *http.Request) (res *http.Response, err error)

RoundTrip sends the request to the server, handling any authentication re-sends as needed.

type Version

Version is a struct representing https://msdn.microsoft.com/en-us/library/cc236654.aspx

type Version struct {
    ProductMajorVersion uint8
    ProductMinorVersion uint8
    ProductBuild        uint16

    NTLMRevisionCurrent uint8
    // contains filtered or unexported fields
}

func DefaultVersion

func DefaultVersion() Version

DefaultVersion returns a Version with "sensible" defaults (Windows 7)