mirror of https://github.com/ory/hydra
58 lines
2.3 KiB
Go
58 lines
2.3 KiB
Go
// Copyright © 2025 Ory Corp
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package oauth2
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/ory/hydra/v2/fosite"
|
|
)
|
|
|
|
// AuthorizeCodeStorage handles storage requests related to authorization codes.
|
|
type AuthorizeCodeStorage interface {
|
|
// CreateAuthorizeCodeSession stores the authorization request for a given authorization code.
|
|
CreateAuthorizeCodeSession(ctx context.Context, code string, request fosite.Requester) (err error)
|
|
|
|
// GetAuthorizeCodeSession hydrates the session based on the given code and returns the authorization request.
|
|
// If the authorization code has been invalidated with `InvalidateAuthorizeCodeSession`, this
|
|
// method should return the ErrInvalidatedAuthorizeCode error.
|
|
//
|
|
// Make sure to also return the fosite.Requester value when returning the fosite.ErrInvalidatedAuthorizeCode error!
|
|
GetAuthorizeCodeSession(ctx context.Context, code string, session fosite.Session) (request fosite.Requester, err error)
|
|
|
|
// InvalidateAuthorizeCodeSession is called when an authorize code is being used. The state of the authorization
|
|
// code should be set to invalid and consecutive requests to GetAuthorizeCodeSession should return the
|
|
// ErrInvalidatedAuthorizeCode error.
|
|
InvalidateAuthorizeCodeSession(ctx context.Context, code string) (err error)
|
|
}
|
|
type AuthorizeCodeStorageProvider interface {
|
|
AuthorizeCodeStorage() AuthorizeCodeStorage
|
|
}
|
|
|
|
type AccessTokenStorage interface {
|
|
CreateAccessTokenSession(ctx context.Context, signature string, request fosite.Requester) (err error)
|
|
|
|
GetAccessTokenSession(ctx context.Context, signature string, session fosite.Session) (request fosite.Requester, err error)
|
|
|
|
DeleteAccessTokenSession(ctx context.Context, signature string) (err error)
|
|
}
|
|
|
|
type AccessTokenStorageProvider interface {
|
|
AccessTokenStorage() AccessTokenStorage
|
|
}
|
|
|
|
type RefreshTokenStorage interface {
|
|
CreateRefreshTokenSession(ctx context.Context, signature string, accessSignature string, request fosite.Requester) (err error)
|
|
|
|
GetRefreshTokenSession(ctx context.Context, signature string, session fosite.Session) (request fosite.Requester, err error)
|
|
|
|
DeleteRefreshTokenSession(ctx context.Context, signature string) (err error)
|
|
|
|
RotateRefreshToken(ctx context.Context, requestID string, refreshTokenSignature string) (err error)
|
|
}
|
|
|
|
type RefreshTokenStorageProvider interface {
|
|
RefreshTokenStorage() RefreshTokenStorage
|
|
}
|