wmealing / spnego

Common Lisp SPNEGO authentication system

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

spnego

This provides a Common Lisp implementation of SPNEGO authentication protocol, also known as Negotiate. Essentially this is a wrapper around the NTLM and Kerberos protocols, with an initial negotiation phase between client and server to decide which method can be used.

1. Introduction

The SPNEGO authentication system provides a pseduo-authentication system which resolves to either NTLM or Kerberos as dictated by an initial negotiation phase between client and server. As a result, it can require multiple exhanges before authentication completes. See rfc4178 for more information.

2. Usage

Use the various generic functions from glass.

2.1 Client

The client calls are implemented and have been shown to work.

;; get a credential handle
(glass:acquire-credentials :spnego "service/host@DOMAIN.COM")

;; generate the initial buffer
(glass:initialize-security-context *creds*)

;; possibly feed the buffer back into the initial context (if several negotiation steps required)
(glass:initialize-security-context context :buffer buffer)

2.2 Server

The equivalent to the client calls, but with ACCEPT-SECURITY-CONTEXT.

;; get a credential handle
(glass:acquire-credentials :spnego nil)

;; accept an input buffer
(glass:accept-security-context creds buffer)

;; possibly generate another buffer if multiple steps required (mutual authentication)
(glass:accept-security-context context buffer)

3. Notes

The underlying NTLM and Kerberos implementations are ntlm and cerberus. See those for more information in the relevant details.

4. License

Licensed under the terms of the MIT license.

Frank James June 2015.

About

Common Lisp SPNEGO authentication system

License:MIT License


Languages

Language:Common Lisp 54.0%Language:C 46.0%