shawm11 / oz-auth
PHP implementation of the Oz web authorization protocol
Requires
- php: >=7.2.0
- nategood/httpful: ^0.3.0
- shawm11/hawk-auth: ^1.0
- shawm11/iron-crypto: ^1.0
Requires (Dev)
- php: >=7.3.0
- codeception/assert-throws: ^1.0
- codeception/specify: ^1.1
- codeception/verify: ^2.0
- consolidation/robo: ^2.1
- mockery/mockery: ^1.1
- phpstan/phpstan: ^0.12.0
- phpunit/phpunit: ^9.0
- squizlabs/php_codesniffer: ^3.2
This package is auto-updated.
Last update: 2024-11-09 02:21:15 UTC
README
Oz Authorization PHP
A PHP implementation of the 5.0.0 version of the Oz web authorization protocol.
Important
Oz is one of those rare projects that can be considered "complete". This means that changes to this repository be infrequent because only the development dependencies may need to be updated once every few years.
If there is a bug or error in the documentation, please create an issue. The issue will receive a response or be resolved as soon as possible.
Table of Contents
- What is Oz?
- Getting Started
- Workflows
- Usage Examples
- Documentation
- Security Considerations
- Related Projects
- Contributing/Development
- Versioning
- License
What is Oz?
According to the Oz README:
Oz is a web authorization protocol based on industry best practices. Oz combines the Hawk authentication protocol with the Iron encryption protocol to provide a simple to use and secure solution for granting and authenticating third-party access to an API on behalf of a user or an application.
Oz and OAuth 2.0
Oz is an alternative to OAuth 1.0a and OAuth 2.0 three-legged authorization. One of the goals of Oz is to be simple to use for the most common use cases without needing to be a web security expert while being flexible enough for less common use cases that may need more advanced web security knowledge. Oz does this by providing default options that are secure for the most common use cases, in other words Oz aims to be secure by default.
All of the official three-legged OAuth 2.0 grant types have an equivalent Oz workflow. Below is table showing the Oz workflow equivalents for the OAuth 2.0 grant types.
Getting Started
Prerequisites
- Git 2.9+
- PHP 7.2.0+
- OpenSSL PHP Extension
- JSON PHP Extension
- cURL PHP Extension (Only if using the Oz client)
- Composer
- Node 6.9.0+ (Only for development)
Installation
Download and install using Composer:
composer require shawm11/oz-auth-php
Workflows
This package includes two workflows that are not part of the official Oz web authorization protocol. These two new workflows are the User Credentials Workflow and the Implicit Workflow. The standard Oz workflow that is specified by the official protocol is referred to as the "RSVP workflow".
Usage Examples
Server Usage Examples
- RSVP Workflow — Server
- User Credentials Workflow — Server
- Implicit Workflow — Server
- All Workflows — Server
Client Usage Examples
- RSVP Workflow — Client
- User Credentials Workflow — Client
- Implicit Workflow — Client
- All Workflows — Client
Documentation
- RSVP Workflow (Without Delegation) — General overview of the RSVP (standard) workflow when delegation is not being used
- User Credentials Workflow — General overview of the User Credentials workflow
- Implicit Workflow — General overview of the Implicit workflow
API References
- Server API — API reference for the classes
in the
Shawm11\Oz\Server
namespace - Client API — API reference for the classes
in the
Shawm11\Oz\Client
namespace - Shared Arrays — Details about collections of data used in other parts of the API
Security Considerations
See the Security Considerations section of Oz's README.
Related Projects
- Hawk PHP Implementation — Hawk is an HTTP authentication scheme that is an alternative to OAuth 1.0a and OAuth 2.0 two-legged authentication.
- Iron PHP Implementation — iron (spelled with all lowercase), a cryptographic utility for sealing a JSON object into an encapsulated token. iron can be considered as an alternative to JSON Web Tokens (JWT).
Contributing/Development
Please read CONTRIBUTING.md for details on coding style, Git commit message guidelines, and other development information.
Versioning
This project using SemVer for versioning. For the versions available, see the tags on this repository.
License
This project is open-sourced software licensed under the MIT license.