Documentation
¶
Index ¶
- Constants
- Variables
- func AddActor(st FullStorage, p *vocab.Person, pw []byte, author vocab.Actor) (*vocab.Person, error)
- func AddKeyToItem(st FullStorage, it vocab.Item, typ string) error
- func AddKeyToPerson(metaSaver MetadataStorage, typ string) func(act *vocab.Actor) error
- func ByName(names ...string) url.Values
- func ByType(types ...vocab.ActivityVocabularyType) url.Values
- func ByURL(urls ...vocab.IRI) url.Values
- func GenerateRSAKeyPair() (pem.Block, pem.Block)
- func GeneratedClientActor(author vocab.Item, clientRequest ClientRegistrationRequest) *vocab.Actor
- func IRIWithFilters(iri vocab.IRI, searchParams ...url.Values) vocab.IRI
- func NewIndieAuthActor(storage FullStorage, clientURL *url.URL, actor vocab.Item) (*vocab.Person, error)
- func SearchActorsIRI(baseIRI vocab.IRI, searchParams ...url.Values) vocab.IRI
- func ValidateClientRegistrationRequest(req ClientRegistrationRequest) error
- type ActorLoader
- type ClientLister
- type ClientRegistrationError
- type ClientRegistrationErrorCode
- type ClientRegistrationRequest
- type ClientRegistrationResponse
- type ClientSaver
- type FullStorage
- type MetadataLoader
- type MetadataStorage
- type PasswordChanger
- type Service
- func (s *Service) Authorize(w http.ResponseWriter, r *http.Request)
- func (s *Service) ClientRegistration(w http.ResponseWriter, r *http.Request)
- func (s *Service) HandleChangePw(w http.ResponseWriter, r *http.Request)
- func (s *Service) HandleError(e error) http.HandlerFunc
- func (s *Service) IsValidRequest(r *http.Request) bool
- func (s *Service) OutOfOrderMw(next http.Handler) http.Handler
- func (s *Service) ShowChangePw(w http.ResponseWriter, r *http.Request)
- func (s *Service) Token(w http.ResponseWriter, r *http.Request)
- func (s *Service) ValidateClient(r *http.Request) (*vocab.Actor, error)
- type Storage
Constants ¶
View Source
const (
ID osin.AuthorizeRequestType = "id"
)
Variables ¶
View Source
var AnonymousAcct = account{ // contains filtered or unexported fields }
View Source
var InDebugMode bool = false
View Source
var InMaintenanceMode bool = false
View Source
var IsDev = false
Functions ¶
func AddKeyToItem ¶
func AddKeyToItem(st FullStorage, it vocab.Item, typ string) error
func AddKeyToPerson ¶
func AddKeyToPerson(metaSaver MetadataStorage, typ string) func(act *vocab.Actor) error
func GeneratedClientActor ¶
func GeneratedClientActor(author vocab.Item, clientRequest ClientRegistrationRequest) *vocab.Actor
func NewIndieAuthActor ¶
func SearchActorsIRI ¶
func ValidateClientRegistrationRequest ¶
func ValidateClientRegistrationRequest(req ClientRegistrationRequest) error
ValidateClientRegistrationRequest When an OAuth 2.0 error condition occurs, such as the client presenting an invalid initial access token, the authorization server returns an error response appropriate to the OAuth 2.0 token type. When a registration error condition occurs, the authorization server returns an HTTP 400 status code (unless otherwise specified) with content type "application/json" consisting of a JSON object [RFC7159] describing the error in the response body. Two members are defined for inclusion in the JSON object:
Types ¶
type ActorLoader ¶
type ClientRegistrationError ¶
type ClientRegistrationError struct {
// ErrorCode Single ASCII error code string.
ErrorCode ClientRegistrationErrorCode `json:"error"`
// ErrorDescription Human-readable ASCII text description of the error used for debugging.
ErrorDescription string `json:"error_description"`
}
func (ClientRegistrationError) Error ¶
func (e ClientRegistrationError) Error() string
type ClientRegistrationErrorCode ¶
type ClientRegistrationErrorCode string
const ( // InvalidRedirectURI The value of one or more redirection URIs is invalid. InvalidRedirectURI ClientRegistrationErrorCode = "invalid_redirect_uri" // InvalidClientMetadata The value of one of the client metadata fields is invalid and the // server has rejected this request. Note that an authorization // server MAY choose to substitute a valid value for any requested // parameter of a client's metadata. InvalidClientMetadata ClientRegistrationErrorCode = "invalid_client_metadata" // InvalidSoftwareStatement The software statement presented is invalid. InvalidSoftwareStatement ClientRegistrationErrorCode = "invalid_software_statement" // UnapprovedSoftwareStatement The software statement presented is not approved for use by this // authorization server. UnapprovedSoftwareStatement ClientRegistrationErrorCode = "unapproved_software_statement" )
type ClientRegistrationRequest ¶
type ClientRegistrationRequest struct {
// RedirectUris Array of redirection URI strings for use in redirect-based flows
// such as the authorization code and implicit flows. As required by
// Section 2 of OAuth 2.0 [RFC6749], clients using flows with
// redirection MUST register their redirection URI values.
// Authorization servers that support dynamic registration for
// redirect-based flows MUST implement support for this metadata
// value.
RedirectUris []string `json:"redirect_uris"`
// ClientName
// Human-readable string name of the client to be presented to the
// end-user during authorization. If omitted, the authorization
// server MAY display the raw "client_id" value to the end-user
// instead. It is RECOMMENDED that clients always send this field.
// The value of this field MAY be internationalized, as described in
// Section 2.2.
ClientName string `json:"client_name"`
// TokenEndpointAuthMethod
// String indicator of the requested authentication method for the
// token endpoint. Values defined by this specification are:
// * "none": The client is a public client as defined in OAuth 2.0,
// Section 2.1, and does not have a client secret.
// * "client_secret_post": The client uses the HTTP POST parameters
// as defined in OAuth 2.0, Section 2.3.1.
// * "client_secret_basic": The client uses HTTP Basic as defined in
// OAuth 2.0, Section 2.3.1.
// Additional values can be defined via the IANA "OAuth Token
// Endpoint Authentication Methods" registry established in
// Section 4.2. Absolute URIs can also be used as values for this
// parameter without being registered. If unspecified or omitted,
// the default is "client_secret_basic", denoting the HTTP Basic
// authentication scheme as specified in Section 2.3.1 of OAuth 2.0.
TokenEndpointAuthMethod string `json:"token_endpoint_auth_method"`
// GrantTypes
// Array of OAuth 2.0 grant type strings that the client can use at
// the token endpoint. These grant types are defined as follows:
// * "authorization_code": The authorization code grant type defined
// in OAuth 2.0, Section 4.1.
// * "implicit": The implicit grant type defined in OAuth 2.0,
// Section 4.2.
// * "password": The resource owner password credentials grant type
// defined in OAuth 2.0, Section 4.3.
// * "client_credentials": The client credentials grant type defined
// in OAuth 2.0, Section 4.4.
// * "refresh_token": The refresh token grant type defined in OAuth
// 2.0, Section 6.
// * "urn:ietf:params:oauth:grant-type:jwt-bearer": The JWT Bearer
// Token Grant Type defined in OAuth JWT Bearer Token Profiles
// [RFC7523].
// * "urn:ietf:params:oauth:grant-type:saml2-bearer": The SAML 2.0
// Bearer Assertion Grant defined in OAuth SAML 2 Bearer Token
// Profiles [RFC7522].
// If the token endpoint is used in the grant type, the value of this
// parameter MUST be the same as the value of the "grant_type"
// parameter passed to the token endpoint defined in the grant type
// definition. Authorization servers MAY allow for other values as
// defined in the grant type extension process described in OAuth
// 2.0, Section 4.5. If omitted, the default behavior is that the
// client will use only the "authorization_code" Grant Type.
GrantTypes []string `json:"grant_types"`
// ResponseTypes
// Array of the OAuth 2.0 response type strings that the client can
// use at the authorization endpoint. These response types are
// defined as follows:
// * "code": The authorization code response type defined in OAuth
// 2.0, Section 4.1.
// * "token": The implicit response type defined in OAuth 2.0,
// Section 4.2.
// If the authorization endpoint is used by the grant type, the value
// of this parameter MUST be the same as the value of the
// "response_type" parameter passed to the authorization endpoint
// defined in the grant type definition. Authorization servers MAY
// allow for other values as defined in the grant type extension
// process is described in OAuth 2.0, Section 4.5. If omitted, the
// default is that the client will use only the "code" response type.
ResponseTypes []string `json:"response_types,omitempty"`
// ClientURI
// URL string of a web page providing information about the client.
// If present, the server SHOULD display this URL to the end-user in
// a clickable fashion. It is RECOMMENDED that clients always send
// this field. The value of this field MUST point to a valid web
// page. The value of this field MAY be internationalized, as
// described in Section 2.2.
ClientURI string `json:"client_uri,omitempty"`
// LogoURI
// URL string that references a logo for the client. If present, the
// server SHOULD display this image to the end-user during approval.
// The value of this field MUST point to a valid image file. The
// value of this field MAY be internationalized, as described in
// Section 2.2.
LogoURI string `json:"logo_uri,omitempty"`
// Scope
// String containing a space-separated list of scope values (as
// described in Section 3.3 of OAuth 2.0 [RFC6749]) that the client
// can use when requesting access tokens. The semantics of values in
// this list are service specific. If omitted, an authorization
// server MAY register a client with a default set of scopes.
Scope string `json:"scope,omitempty"`
// Contacts
// Array of strings representing ways to contact people responsible
// for this client, typically email addresses. The authorization
// server MAY make these contact addresses available to end-users for
// support requests for the client. See Section 6 for information on
// Privacy Considerations.
Contacts []string `json:"contacts,omitempty"`
// TosURI
// URL string that points to a human-readable terms of service
// document for the client that describes a contractual relationship
// between the end-user and the client that the end-user accepts when
// authorizing the client. The authorization server SHOULD display
// this URL to the end-user if it is provided. The value of this
// field MUST point to a valid web page. The value of this field MAY
// be internationalized, as described in Section 2.2.
TosURI string `json:"tos_uri,omitempty"`
// PolicyURI
// URL string that points to a human-readable privacy policy document
// that describes how the deployment organization collects, uses,
// retains, and discloses personal data. The authorization server
// SHOULD display this URL to the end-user if it is provided. The
// value of this field MUST point to a valid web page. The value of
// this field MAY be internationalized, as described in Section 2.2.
PolicyURI string `json:"policy_uri,omitempty"`
// JwksURI
// URL string referencing the client's JSON Web Key (JWK) Set
// [RFC7517] document, which contains the client's public keys. The
// value of this field MUST point to a valid JWK Set document. These
// keys can be used by higher-level protocols that use signing or
// encryption. For instance, these keys might be used by some
// applications for validating signed requests made to the token
// endpoint when using JWTs for client authentication [RFC7523]. Use
// of this parameter is preferred over the "jwks" parameter, as it
// allows for easier key rotation. The "jwks_uri" and "jwks"
// parameters MUST NOT both be present in the same request or
// response.
JwksURI string `json:"jwks_uri,omitempty"`
// Jwks
// Client's JSON Web Key Set [RFC7517] document value, which contains
// the client's public keys. The value of this field MUST be a JSON
// object containing a valid JWK Set. These keys can be used by
// higher-level protocols that use signing or encryption. This
// parameter is intended to be used by clients that cannot use the
// "jwks_uri" parameter, such as native clients that cannot host
// public URLs. The "jwks_uri" and "jwks" parameters MUST NOT both
// be present in the same request or response.
Jwks json.RawMessage `json:"jwks,omitempty"`
// SoftwareID
// A unique identifier string (e.g., a Universally Unique Identifier
// (UUID)) assigned by the client developer or software publisher
// used by registration endpoints to identify the client software to
// be dynamically registered. Unlike "client_id", which is issued by
// the authorization server and SHOULD vary between instances, the
// "software_id" SHOULD remain the same for all instances of the
// client software. The "software_id" SHOULD remain the same across
SoftwareID uuid.UUID `json:"software_id,omitempty"`
}
type ClientRegistrationResponse ¶
type ClientRegistrationResponse struct {
// ClientID REQUIRED. OAuth 2.0 client identifier string. It SHOULD NOT be
// currently valid for any other registered client, though an
// authorization server MAY issue the same client identifier to
// multiple instances of a registered client at its discretion.
ClientID string `json:"client_id"`
// ClientSecret
// OPTIONAL. OAuth 2.0 client secret string. If issued, this MUST
// be unique for each "client_id" and SHOULD be unique for multiple
// instances of a client using the same "client_id". This value is
// used by confidential clients to authenticate to the token
// endpoint, as described in OAuth 2.0 [RFC6749], Section 2.3.1.
ClientSecret string `json:"client_secret"`
// IssuedAt OPTIONAL. Time at which the client identifier was issued. The
// time is represented as the number of seconds from
// 1970-01-01T00:00:00Z as measured in UTC until the date/time of
// issuance.
IssuedAt int64 `json:"client_id_issued_at"`
// Expires REQUIRED if "client_secret" is issued. Time at which the client
// secret will expire or 0 if it will not expire. The time is
// represented as the number of seconds from 1970-01-01T00:00:00Z as
// measured in UTC until the date/time of expiration.
Expires int64 `json:"client_secret_expires_at"`
}
type ClientSaver ¶
type FullStorage ¶
type FullStorage interface {
Open() error
ClientSaver
ClientLister
Storage
PasswordChanger
osin.Storage
}
type MetadataLoader ¶
type MetadataStorage ¶
type PasswordChanger ¶
type Service ¶
type Service struct {
Stores []FullStorage
Client auth.Client
Logger lw.Logger
}
func (*Service) ClientRegistration ¶
func (s *Service) ClientRegistration(w http.ResponseWriter, r *http.Request)
func (*Service) HandleChangePw ¶
func (s *Service) HandleChangePw(w http.ResponseWriter, r *http.Request)
HandleChangePw
func (*Service) HandleError ¶
func (s *Service) HandleError(e error) http.HandlerFunc
func (*Service) ShowChangePw ¶
func (s *Service) ShowChangePw(w http.ResponseWriter, r *http.Request)
ShowChangePw
Source Files
¶
Click to show internal directories.
Click to hide internal directories.