{"size": 2437, "ext": "scrbl", "max_stars_repo_path": "scribblings/simple-oauth2.scrbl", "max_stars_repo_name": "octplane/simple-oauth2", "max_stars_repo_stars_event_min_datetime": "2019-05-27T12:12:39.000Z", "max_stars_repo_stars_event_max_datetime": "2021-11-16T14:05:29.000Z", "max_issues_repo_path": "scribblings/simple-oauth2.scrbl", "max_issues_repo_name": "octplane/simple-oauth2", "max_issues_repo_issues_event_min_datetime": "2020-07-01T13:07:32.000Z", "max_issues_repo_issues_event_max_datetime": "2021-02-24T15:30:36.000Z", "max_forks_repo_path": "scribblings/simple-oauth2.scrbl", "max_forks_repo_name": "octplane/simple-oauth2", "max_forks_repo_forks_event_min_datetime": "2020-04-28T06:50:27.000Z", "max_forks_repo_forks_event_max_datetime": "2021-02-16T06:58:24.000Z"}
{"max_stars_count": 12, "max_issues_count": 2, "max_forks_count": 3, "avg_line_length": 45.9811320755, "max_line_length": 125, "alphanum_fraction": 0.7283545343}
#lang scribble/manual

@(require racket/file
          scribble/core)

@;{============================================================================}

@title[#:version "1.0"]{Package simple-oauth2.}
@author[(author+email "Simon Johnston" "johnstonskj@gmail.com")]

This package provides an implementation of a full client (both flow-based and
  request-based) for OAuth 2.0 protected resources with a framework for both
  authorization and resource servers to follow. It implements, or references,
  the following set of OAuth 2.0 standards:

@itemlist[
  @item{@hyperlink["https://tools.ietf.org/html/rfc6749"]{The OAuth 2.0 Authorization Framework},
  which implies @hyperlink["https://tools.ietf.org/html/rfc6750"]{The OAuth 2.0 Authorization Framework: Bearer Token Usage}}
  @item{@hyperlink["https://tools.ietf.org/html/rfc8252"]{OAuth 2.0 for Native Apps}}
  @item{@hyperlink["https://tools.ietf.org/html/rfc7636"]{Proof Key for Code Exchange (PKCE) by OAuth Public Clients}}
  @item{@hyperlink["https://tools.ietf.org/html/rfc7009"]{OAuth 2.0 Token Revocation}}
  @item{@hyperlink["https://tools.ietf.org/html/rfc7662"]{OAuth 2.0 Token Introspection}}
  #:style 'ordered]

In the same way as RFC6749, this implementation @italic{"defines the use of bearer
tokens over HTTP/1.1 @hyperlink["https://tools.ietf.org/html/2616"]{[RFC2616]} using
  Transport Layer Security (TLS) @hyperlink["https://tools.ietf.org/html/5246"]{[RFC5246]}
  to access protected resources."} No implementation is provided other than HTTP/1.1.

Racket already provides two packages with embedded OAuth implementations, 1)
@italic{@hyperlink["https://pkgs.racket-lang.org/package/webapi"]{webapi} -
Implementations of a few web APIs, including OAuth2, PicasaWeb, and Blogger}, and 2)
@italic{@hyperlink["https://pkgs.racket-lang.org/package/google"]{google} - Google
  APIs (Drive, Plus, ...}. The difference between these and simple-oauth2 is an
  intent to be an extensible framework that as well as providing clear
  implementations of the specific requests and the grant flows, also provides a
  credential store for client and token persistence. The package also provides example
  command-line tools for accessing common services.

@table-of-contents[]

@include-section["oauth2.scrbl"]

@include-section["client.scrbl"]

@include-section["storage.scrbl"]

@include-section["tools.scrbl"]

@section{License}

@verbatim|{|@file->string["LICENSE"]}|
