mOAuth is a basic OAuth 2.0 client/server implementation designed for testing and development of OAuth-based services. The client library supports authorization of native macOS, iOS, and Linux applications with PKCE. The server is both an Authorization Server and a Resource Server that supports:
- User account authentication/authorization using PAM
- Traditional web-based authorization grants with redirection as well as resource owner password credentials grants
- Token introspection for services
- Basic Resource Server functionality with implicit and explicit ACLs
- Customizable web interface
mOAuth requires libcups v3 for its HTTPS and JWT support. If you are compiling from source you'll need a C compiler (GCC and clang are fine) and a POSIX make program (GNU make works).
The specific standards mOAuth currently implements are:
- The OAuth2 Authentication Framework (RFC6749)
- The OAuth2 Bearer Token (RFC6750)
- OAuth 2.0 Dynamic Client Registration Protocol (RFC7591)
- Proof Key for Code Exchange by OAuth Public Clients (RFC7636)
- OAuth 2.0 Token Introspection (RFC7662)
- OAuth 2.0 for Native Apps (RFC8252)
- OAuth 2.0 Authorization Server Metadata (RFC8414)
The simplest way to use mOAuth on Linux is to install the moauth snap with:
sudo snap install moauth
You can also build and install from source (see commands below) and then run
moauthd
by hand.
mOAuth uses the typical configure script and makefile build system and requires a recent version of libcups v3 to provide the necessary HTTPS support.
Assuming everything in in the normal locations the following commands will build and install mOAuth on your system to "/usr/local":
./configure
make
make install
The --prefix
option can be used to override the default installation prefix,
for example:
./configure --prefix=/opt/moauth
Copyright © 2017-2024 by Michael R Sweet.
mOAuth is licensed under the Apache License Version 2.0 with an exception to allow linking against GPL2/LGPL2 software (like older versions of CUPS). See the files "LICENSE" and "NOTICE" for more information.