Documentation ¶
Index ¶
- func AuthenticateOidcPath() string
- func DecodeAuthenticateRequest(mux goahttp.Muxer, decoder func(*http.Request) goahttp.Decoder) func(*http.Request) (interface{}, error)
- func DecodeRequiredRequest(mux goahttp.Muxer, decoder func(*http.Request) goahttp.Decoder) func(*http.Request) (interface{}, error)
- func DecodeURLRequest(mux goahttp.Muxer, decoder func(*http.Request) goahttp.Decoder) func(*http.Request) (interface{}, error)
- func EncodeAuthenticateError(encoder func(context.Context, http.ResponseWriter) goahttp.Encoder, ...) func(context.Context, http.ResponseWriter, error) error
- func EncodeAuthenticateResponse(encoder func(context.Context, http.ResponseWriter) goahttp.Encoder) func(context.Context, http.ResponseWriter, interface{}) error
- func EncodeRequiredError(encoder func(context.Context, http.ResponseWriter) goahttp.Encoder, ...) func(context.Context, http.ResponseWriter, error) error
- func EncodeRequiredResponse(encoder func(context.Context, http.ResponseWriter) goahttp.Encoder) func(context.Context, http.ResponseWriter, interface{}) error
- func EncodeURLError(encoder func(context.Context, http.ResponseWriter) goahttp.Encoder, ...) func(context.Context, http.ResponseWriter, error) error
- func EncodeURLResponse(encoder func(context.Context, http.ResponseWriter) goahttp.Encoder) func(context.Context, http.ResponseWriter, interface{}) error
- func Mount(mux goahttp.Muxer, h *Server)
- func MountAuthenticateHandler(mux goahttp.Muxer, h http.Handler)
- func MountCORSHandler(mux goahttp.Muxer, h http.Handler)
- func MountRequiredHandler(mux goahttp.Muxer, h http.Handler)
- func MountURLHandler(mux goahttp.Muxer, h http.Handler)
- func NewAuthenticateHandler(endpoint goa.Endpoint, mux goahttp.Muxer, ...) http.Handler
- func NewAuthenticatePayload(state string, sessionState string, code string) *oidc.AuthenticatePayload
- func NewCORSHandler() http.Handler
- func NewRequiredHandler(endpoint goa.Endpoint, mux goahttp.Muxer, ...) http.Handler
- func NewRequiredPayload(after *string, follow *bool, token *string) *oidc.RequiredPayload
- func NewURLHandler(endpoint goa.Endpoint, mux goahttp.Muxer, ...) http.Handler
- func NewURLPayload(after *string, follow *bool, token *string) *oidc.URLPayload
- func RequiredOidcPath() string
- func URLOidcPath() string
- type AuthenticateBadRequestResponseBody
- type AuthenticateForbiddenResponseBody
- type AuthenticateNotFoundResponseBody
- type AuthenticateResponseBody
- type AuthenticateUnauthorizedResponseBody
- type AuthenticateUserUnverifiedResponseBody
- type ErrorNamer
- type MountPoint
- type RequiredBadRequestResponseBody
- type RequiredForbiddenResponseBody
- type RequiredNotFoundResponseBody
- type RequiredUnauthorizedResponseBody
- type Server
- type URLBadRequestResponseBody
- type URLForbiddenResponseBody
- type URLNotFoundResponseBody
- type URLResponseBody
- type URLUnauthorizedResponseBody
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AuthenticateOidcPath ¶
func AuthenticateOidcPath() string
AuthenticateOidcPath returns the URL path to the oidc service authenticate HTTP endpoint.
func DecodeAuthenticateRequest ¶
func DecodeAuthenticateRequest(mux goahttp.Muxer, decoder func(*http.Request) goahttp.Decoder) func(*http.Request) (interface{}, error)
DecodeAuthenticateRequest returns a decoder for requests sent to the oidc authenticate endpoint.
func DecodeRequiredRequest ¶
func DecodeRequiredRequest(mux goahttp.Muxer, decoder func(*http.Request) goahttp.Decoder) func(*http.Request) (interface{}, error)
DecodeRequiredRequest returns a decoder for requests sent to the oidc required endpoint.
func DecodeURLRequest ¶
func DecodeURLRequest(mux goahttp.Muxer, decoder func(*http.Request) goahttp.Decoder) func(*http.Request) (interface{}, error)
DecodeURLRequest returns a decoder for requests sent to the oidc url endpoint.
func EncodeAuthenticateError ¶
func EncodeAuthenticateError(encoder func(context.Context, http.ResponseWriter) goahttp.Encoder, formatter func(err error) goahttp.Statuser) func(context.Context, http.ResponseWriter, error) error
EncodeAuthenticateError returns an encoder for errors returned by the authenticate oidc endpoint.
func EncodeAuthenticateResponse ¶
func EncodeAuthenticateResponse(encoder func(context.Context, http.ResponseWriter) goahttp.Encoder) func(context.Context, http.ResponseWriter, interface{}) error
EncodeAuthenticateResponse returns an encoder for responses returned by the oidc authenticate endpoint.
func EncodeRequiredError ¶
func EncodeRequiredError(encoder func(context.Context, http.ResponseWriter) goahttp.Encoder, formatter func(err error) goahttp.Statuser) func(context.Context, http.ResponseWriter, error) error
EncodeRequiredError returns an encoder for errors returned by the required oidc endpoint.
func EncodeRequiredResponse ¶
func EncodeRequiredResponse(encoder func(context.Context, http.ResponseWriter) goahttp.Encoder) func(context.Context, http.ResponseWriter, interface{}) error
EncodeRequiredResponse returns an encoder for responses returned by the oidc required endpoint.
func EncodeURLError ¶
func EncodeURLError(encoder func(context.Context, http.ResponseWriter) goahttp.Encoder, formatter func(err error) goahttp.Statuser) func(context.Context, http.ResponseWriter, error) error
EncodeURLError returns an encoder for errors returned by the url oidc endpoint.
func EncodeURLResponse ¶
func EncodeURLResponse(encoder func(context.Context, http.ResponseWriter) goahttp.Encoder) func(context.Context, http.ResponseWriter, interface{}) error
EncodeURLResponse returns an encoder for responses returned by the oidc url endpoint.
func MountAuthenticateHandler ¶
MountAuthenticateHandler configures the mux to serve the "oidc" service "authenticate" endpoint.
func MountCORSHandler ¶
MountCORSHandler configures the mux to serve the CORS endpoints for the service oidc.
func MountRequiredHandler ¶
MountRequiredHandler configures the mux to serve the "oidc" service "required" endpoint.
func MountURLHandler ¶
MountURLHandler configures the mux to serve the "oidc" service "url" endpoint.
func NewAuthenticateHandler ¶
func NewAuthenticateHandler( endpoint goa.Endpoint, mux goahttp.Muxer, decoder func(*http.Request) goahttp.Decoder, encoder func(context.Context, http.ResponseWriter) goahttp.Encoder, errhandler func(context.Context, http.ResponseWriter, error), formatter func(err error) goahttp.Statuser, ) http.Handler
NewAuthenticateHandler creates a HTTP handler which loads the HTTP request and calls the "oidc" service "authenticate" endpoint.
func NewAuthenticatePayload ¶
func NewAuthenticatePayload(state string, sessionState string, code string) *oidc.AuthenticatePayload
NewAuthenticatePayload builds a oidc service authenticate endpoint payload.
func NewCORSHandler ¶
NewCORSHandler creates a HTTP handler which returns a simple 200 response.
func NewRequiredHandler ¶
func NewRequiredHandler( endpoint goa.Endpoint, mux goahttp.Muxer, decoder func(*http.Request) goahttp.Decoder, encoder func(context.Context, http.ResponseWriter) goahttp.Encoder, errhandler func(context.Context, http.ResponseWriter, error), formatter func(err error) goahttp.Statuser, ) http.Handler
NewRequiredHandler creates a HTTP handler which loads the HTTP request and calls the "oidc" service "required" endpoint.
func NewRequiredPayload ¶
func NewRequiredPayload(after *string, follow *bool, token *string) *oidc.RequiredPayload
NewRequiredPayload builds a oidc service required endpoint payload.
func NewURLHandler ¶
func NewURLHandler( endpoint goa.Endpoint, mux goahttp.Muxer, decoder func(*http.Request) goahttp.Decoder, encoder func(context.Context, http.ResponseWriter) goahttp.Encoder, errhandler func(context.Context, http.ResponseWriter, error), formatter func(err error) goahttp.Statuser, ) http.Handler
NewURLHandler creates a HTTP handler which loads the HTTP request and calls the "oidc" service "url" endpoint.
func NewURLPayload ¶
func NewURLPayload(after *string, follow *bool, token *string) *oidc.URLPayload
NewURLPayload builds a oidc service url endpoint payload.
func RequiredOidcPath ¶
func RequiredOidcPath() string
RequiredOidcPath returns the URL path to the oidc service required HTTP endpoint.
func URLOidcPath ¶
func URLOidcPath() string
URLOidcPath returns the URL path to the oidc service url HTTP endpoint.
Types ¶
type AuthenticateBadRequestResponseBody ¶
type AuthenticateBadRequestResponseBody struct { // Name is the name of this class of errors. Name string `form:"name" json:"name" xml:"name"` // ID is a unique identifier for this particular occurrence of the problem. ID string `form:"id" json:"id" xml:"id"` // Message is a human-readable explanation specific to this occurrence of the // problem. Message string `form:"message" json:"message" xml:"message"` // Is the error temporary? Temporary bool `form:"temporary" json:"temporary" xml:"temporary"` // Is the error a timeout? Timeout bool `form:"timeout" json:"timeout" xml:"timeout"` // Is the error a server-side fault? Fault bool `form:"fault" json:"fault" xml:"fault"` }
AuthenticateBadRequestResponseBody is the type of the "oidc" service "authenticate" endpoint HTTP response body for the "bad-request" error.
func NewAuthenticateBadRequestResponseBody ¶
func NewAuthenticateBadRequestResponseBody(res *goa.ServiceError) *AuthenticateBadRequestResponseBody
NewAuthenticateBadRequestResponseBody builds the HTTP response body from the result of the "authenticate" endpoint of the "oidc" service.
type AuthenticateForbiddenResponseBody ¶
type AuthenticateForbiddenResponseBody struct { // Name is the name of this class of errors. Name string `form:"name" json:"name" xml:"name"` // ID is a unique identifier for this particular occurrence of the problem. ID string `form:"id" json:"id" xml:"id"` // Message is a human-readable explanation specific to this occurrence of the // problem. Message string `form:"message" json:"message" xml:"message"` // Is the error temporary? Temporary bool `form:"temporary" json:"temporary" xml:"temporary"` // Is the error a timeout? Timeout bool `form:"timeout" json:"timeout" xml:"timeout"` // Is the error a server-side fault? Fault bool `form:"fault" json:"fault" xml:"fault"` }
AuthenticateForbiddenResponseBody is the type of the "oidc" service "authenticate" endpoint HTTP response body for the "forbidden" error.
func NewAuthenticateForbiddenResponseBody ¶
func NewAuthenticateForbiddenResponseBody(res *goa.ServiceError) *AuthenticateForbiddenResponseBody
NewAuthenticateForbiddenResponseBody builds the HTTP response body from the result of the "authenticate" endpoint of the "oidc" service.
type AuthenticateNotFoundResponseBody ¶
type AuthenticateNotFoundResponseBody struct { // Name is the name of this class of errors. Name string `form:"name" json:"name" xml:"name"` // ID is a unique identifier for this particular occurrence of the problem. ID string `form:"id" json:"id" xml:"id"` // Message is a human-readable explanation specific to this occurrence of the // problem. Message string `form:"message" json:"message" xml:"message"` // Is the error temporary? Temporary bool `form:"temporary" json:"temporary" xml:"temporary"` // Is the error a timeout? Timeout bool `form:"timeout" json:"timeout" xml:"timeout"` // Is the error a server-side fault? Fault bool `form:"fault" json:"fault" xml:"fault"` }
AuthenticateNotFoundResponseBody is the type of the "oidc" service "authenticate" endpoint HTTP response body for the "not-found" error.
func NewAuthenticateNotFoundResponseBody ¶
func NewAuthenticateNotFoundResponseBody(res *goa.ServiceError) *AuthenticateNotFoundResponseBody
NewAuthenticateNotFoundResponseBody builds the HTTP response body from the result of the "authenticate" endpoint of the "oidc" service.
type AuthenticateResponseBody ¶
type AuthenticateResponseBody struct { Location string `form:"location" json:"location" xml:"location"` Token string `form:"token" json:"token" xml:"token"` Header string `form:"header" json:"header" xml:"header"` }
AuthenticateResponseBody is the type of the "oidc" service "authenticate" endpoint HTTP response body.
func NewAuthenticateResponseBody ¶
func NewAuthenticateResponseBody(res *oidc.AuthenticateResult) *AuthenticateResponseBody
NewAuthenticateResponseBody builds the HTTP response body from the result of the "authenticate" endpoint of the "oidc" service.
type AuthenticateUnauthorizedResponseBody ¶
type AuthenticateUnauthorizedResponseBody struct { string `form:"name" json:"name" xml:"name"` ID string `form:"id" json:"id" xml:"id"` // problem. Message string `form:"message" json:"message" xml:"message"` Temporary bool `form:"temporary" json:"temporary" xml:"temporary"` Timeout bool `form:"timeout" json:"timeout" xml:"timeout"` Fault bool `form:"fault" json:"fault" xml:"fault"` }Name
AuthenticateUnauthorizedResponseBody is the type of the "oidc" service "authenticate" endpoint HTTP response body for the "unauthorized" error.
func NewAuthenticateUnauthorizedResponseBody ¶
func NewAuthenticateUnauthorizedResponseBody(res *goa.ServiceError) *AuthenticateUnauthorizedResponseBody
NewAuthenticateUnauthorizedResponseBody builds the HTTP response body from the result of the "authenticate" endpoint of the "oidc" service.
type AuthenticateUserUnverifiedResponseBody ¶
type AuthenticateUserUnverifiedResponseBody struct { // Name is the name of this class of errors. Name string `form:"name" json:"name" xml:"name"` // ID is a unique identifier for this particular occurrence of the problem. ID string `form:"id" json:"id" xml:"id"` // Message is a human-readable explanation specific to this occurrence of the // problem. Message string `form:"message" json:"message" xml:"message"` // Is the error temporary? Temporary bool `form:"temporary" json:"temporary" xml:"temporary"` // Is the error a timeout? Timeout bool `form:"timeout" json:"timeout" xml:"timeout"` // Is the error a server-side fault? Fault bool `form:"fault" json:"fault" xml:"fault"` }
AuthenticateUserUnverifiedResponseBody is the type of the "oidc" service "authenticate" endpoint HTTP response body for the "user-unverified" error.
func NewAuthenticateUserUnverifiedResponseBody ¶
func NewAuthenticateUserUnverifiedResponseBody(res *goa.ServiceError) *AuthenticateUserUnverifiedResponseBody
NewAuthenticateUserUnverifiedResponseBody builds the HTTP response body from the result of the "authenticate" endpoint of the "oidc" service.
type ErrorNamer ¶
type ErrorNamer interface {
ErrorName() string
}
ErrorNamer is an interface implemented by generated error structs that exposes the name of the error as defined in the design.
type MountPoint ¶
type MountPoint struct { // Method is the name of the service method served by the mounted HTTP handler. Method string // Verb is the HTTP method used to match requests to the mounted handler. Verb string // Pattern is the HTTP request path pattern used to match requests to the // mounted handler. Pattern string }
MountPoint holds information about the mounted endpoints.
type RequiredBadRequestResponseBody ¶
type RequiredBadRequestResponseBody struct { // Name is the name of this class of errors. Name string `form:"name" json:"name" xml:"name"` // ID is a unique identifier for this particular occurrence of the problem. ID string `form:"id" json:"id" xml:"id"` // Message is a human-readable explanation specific to this occurrence of the // problem. Message string `form:"message" json:"message" xml:"message"` // Is the error temporary? Temporary bool `form:"temporary" json:"temporary" xml:"temporary"` // Is the error a timeout? Timeout bool `form:"timeout" json:"timeout" xml:"timeout"` // Is the error a server-side fault? Fault bool `form:"fault" json:"fault" xml:"fault"` }
RequiredBadRequestResponseBody is the type of the "oidc" service "required" endpoint HTTP response body for the "bad-request" error.
func NewRequiredBadRequestResponseBody ¶
func NewRequiredBadRequestResponseBody(res *goa.ServiceError) *RequiredBadRequestResponseBody
NewRequiredBadRequestResponseBody builds the HTTP response body from the result of the "required" endpoint of the "oidc" service.
type RequiredForbiddenResponseBody ¶
type RequiredForbiddenResponseBody struct { // Name is the name of this class of errors. Name string `form:"name" json:"name" xml:"name"` // ID is a unique identifier for this particular occurrence of the problem. ID string `form:"id" json:"id" xml:"id"` // Message is a human-readable explanation specific to this occurrence of the // problem. Message string `form:"message" json:"message" xml:"message"` // Is the error temporary? Temporary bool `form:"temporary" json:"temporary" xml:"temporary"` // Is the error a timeout? Timeout bool `form:"timeout" json:"timeout" xml:"timeout"` // Is the error a server-side fault? Fault bool `form:"fault" json:"fault" xml:"fault"` }
RequiredForbiddenResponseBody is the type of the "oidc" service "required" endpoint HTTP response body for the "forbidden" error.
func NewRequiredForbiddenResponseBody ¶
func NewRequiredForbiddenResponseBody(res *goa.ServiceError) *RequiredForbiddenResponseBody
NewRequiredForbiddenResponseBody builds the HTTP response body from the result of the "required" endpoint of the "oidc" service.
type RequiredNotFoundResponseBody ¶
type RequiredNotFoundResponseBody struct { // Name is the name of this class of errors. Name string `form:"name" json:"name" xml:"name"` // ID is a unique identifier for this particular occurrence of the problem. ID string `form:"id" json:"id" xml:"id"` // Message is a human-readable explanation specific to this occurrence of the // problem. Message string `form:"message" json:"message" xml:"message"` // Is the error temporary? Temporary bool `form:"temporary" json:"temporary" xml:"temporary"` // Is the error a timeout? Timeout bool `form:"timeout" json:"timeout" xml:"timeout"` // Is the error a server-side fault? Fault bool `form:"fault" json:"fault" xml:"fault"` }
RequiredNotFoundResponseBody is the type of the "oidc" service "required" endpoint HTTP response body for the "not-found" error.
func NewRequiredNotFoundResponseBody ¶
func NewRequiredNotFoundResponseBody(res *goa.ServiceError) *RequiredNotFoundResponseBody
NewRequiredNotFoundResponseBody builds the HTTP response body from the result of the "required" endpoint of the "oidc" service.
type RequiredUnauthorizedResponseBody ¶
type RequiredUnauthorizedResponseBody struct { string `form:"name" json:"name" xml:"name"` ID string `form:"id" json:"id" xml:"id"` // problem. Message string `form:"message" json:"message" xml:"message"` Temporary bool `form:"temporary" json:"temporary" xml:"temporary"` Timeout bool `form:"timeout" json:"timeout" xml:"timeout"` Fault bool `form:"fault" json:"fault" xml:"fault"` }Name
RequiredUnauthorizedResponseBody is the type of the "oidc" service "required" endpoint HTTP response body for the "unauthorized" error.
func NewRequiredUnauthorizedResponseBody ¶
func NewRequiredUnauthorizedResponseBody(res *goa.ServiceError) *RequiredUnauthorizedResponseBody
NewRequiredUnauthorizedResponseBody builds the HTTP response body from the result of the "required" endpoint of the "oidc" service.
type Server ¶
type Server struct { Mounts []*MountPoint Required http.Handler URL http.Handler Authenticate http.Handler CORS http.Handler }
Server lists the oidc service endpoint HTTP handlers.
func New ¶
func New( e *oidc.Endpoints, mux goahttp.Muxer, decoder func(*http.Request) goahttp.Decoder, encoder func(context.Context, http.ResponseWriter) goahttp.Encoder, errhandler func(context.Context, http.ResponseWriter, error), formatter func(err error) goahttp.Statuser, ) *Server
New instantiates HTTP handlers for all the oidc service endpoints using the provided encoder and decoder. The handlers are mounted on the given mux using the HTTP verb and path defined in the design. errhandler is called whenever a response fails to be encoded. formatter is used to format errors returned by the service methods prior to encoding. Both errhandler and formatter are optional and can be nil.
type URLBadRequestResponseBody ¶
type URLBadRequestResponseBody struct { // Name is the name of this class of errors. Name string `form:"name" json:"name" xml:"name"` // ID is a unique identifier for this particular occurrence of the problem. ID string `form:"id" json:"id" xml:"id"` // Message is a human-readable explanation specific to this occurrence of the // problem. Message string `form:"message" json:"message" xml:"message"` // Is the error temporary? Temporary bool `form:"temporary" json:"temporary" xml:"temporary"` // Is the error a timeout? Timeout bool `form:"timeout" json:"timeout" xml:"timeout"` // Is the error a server-side fault? Fault bool `form:"fault" json:"fault" xml:"fault"` }
URLBadRequestResponseBody is the type of the "oidc" service "url" endpoint HTTP response body for the "bad-request" error.
func NewURLBadRequestResponseBody ¶
func NewURLBadRequestResponseBody(res *goa.ServiceError) *URLBadRequestResponseBody
NewURLBadRequestResponseBody builds the HTTP response body from the result of the "url" endpoint of the "oidc" service.
type URLForbiddenResponseBody ¶
type URLForbiddenResponseBody struct { // Name is the name of this class of errors. Name string `form:"name" json:"name" xml:"name"` // ID is a unique identifier for this particular occurrence of the problem. ID string `form:"id" json:"id" xml:"id"` // Message is a human-readable explanation specific to this occurrence of the // problem. Message string `form:"message" json:"message" xml:"message"` // Is the error temporary? Temporary bool `form:"temporary" json:"temporary" xml:"temporary"` // Is the error a timeout? Timeout bool `form:"timeout" json:"timeout" xml:"timeout"` // Is the error a server-side fault? Fault bool `form:"fault" json:"fault" xml:"fault"` }
URLForbiddenResponseBody is the type of the "oidc" service "url" endpoint HTTP response body for the "forbidden" error.
func NewURLForbiddenResponseBody ¶
func NewURLForbiddenResponseBody(res *goa.ServiceError) *URLForbiddenResponseBody
NewURLForbiddenResponseBody builds the HTTP response body from the result of the "url" endpoint of the "oidc" service.
type URLNotFoundResponseBody ¶
type URLNotFoundResponseBody struct { // Name is the name of this class of errors. Name string `form:"name" json:"name" xml:"name"` // ID is a unique identifier for this particular occurrence of the problem. ID string `form:"id" json:"id" xml:"id"` // Message is a human-readable explanation specific to this occurrence of the // problem. Message string `form:"message" json:"message" xml:"message"` // Is the error temporary? Temporary bool `form:"temporary" json:"temporary" xml:"temporary"` // Is the error a timeout? Timeout bool `form:"timeout" json:"timeout" xml:"timeout"` // Is the error a server-side fault? Fault bool `form:"fault" json:"fault" xml:"fault"` }
URLNotFoundResponseBody is the type of the "oidc" service "url" endpoint HTTP response body for the "not-found" error.
func NewURLNotFoundResponseBody ¶
func NewURLNotFoundResponseBody(res *goa.ServiceError) *URLNotFoundResponseBody
NewURLNotFoundResponseBody builds the HTTP response body from the result of the "url" endpoint of the "oidc" service.
type URLResponseBody ¶
type URLResponseBody struct {
Location string `form:"location" json:"location" xml:"location"`
}
URLResponseBody is the type of the "oidc" service "url" endpoint HTTP response body.
func NewURLResponseBody ¶
func NewURLResponseBody(res *oidc.URLResult) *URLResponseBody
NewURLResponseBody builds the HTTP response body from the result of the "url" endpoint of the "oidc" service.
type URLUnauthorizedResponseBody ¶
type URLUnauthorizedResponseBody struct { string `form:"name" json:"name" xml:"name"` ID string `form:"id" json:"id" xml:"id"` // problem. Message string `form:"message" json:"message" xml:"message"` Temporary bool `form:"temporary" json:"temporary" xml:"temporary"` Timeout bool `form:"timeout" json:"timeout" xml:"timeout"` Fault bool `form:"fault" json:"fault" xml:"fault"` }Name
URLUnauthorizedResponseBody is the type of the "oidc" service "url" endpoint HTTP response body for the "unauthorized" error.
func NewURLUnauthorizedResponseBody ¶
func NewURLUnauthorizedResponseBody(res *goa.ServiceError) *URLUnauthorizedResponseBody
NewURLUnauthorizedResponseBody builds the HTTP response body from the result of the "url" endpoint of the "oidc" service.