1/*
2oidc is a package for writing clients that integrate with OIDC Providers using
3OIDC flows.
4
5
6Primary types provided by the package:
7
8* Request: represents one OIDC authentication flow for a user.  It contains the
9data needed to uniquely represent that one-time flow across the multiple
10interactions needed to complete the OIDC flow the user is attempting.  All
11Requests contain an expiration for the user's OIDC flow. Optionally, Requests may
12contain overrides of configured provider defaults for audiences, scopes and a
13redirect URL.
14
15* Token: represents an OIDC id_token, as well as an Oauth2 access_token and
16refresh_token (including the access_token expiry)
17
18* Config: provides the configuration for OIDC provider used by a relying
19party (for example: client ID/Secret, redirectURL, supported
20signing algorithms, additional scopes requested, etc)
21
22* Provider: provides integration with a provider. The provider provides
23capabilities like: generating an auth URL, exchanging codes for tokens,
24verifying tokens, making user info requests, etc.
25
26The oidc.callback package
27
28The callback package includes handlers (http.HandlerFunc) which can be used
29for the callback leg an OIDC flow. Callback handlers for both the authorization
30code flow (with optional PKCE) and the implicit flow are provided.
31
32Example apps
33
34Complete concise example solutions:
35
36* OIDC authentication CLI:
37https://github.com/hashicorp/cap/tree/main/oidc/examples/cli/
38
39* OIDC authentication SPA:
40https://github.com/hashicorp/cap/tree/main/oidc/examples/spa/
41
42*/
43package oidc
44