processors

package
v1.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 17, 2026 License: Apache-2.0 Imports: 20 Imported by: 0

Documentation

Index

Constants

View Source
const MaxUserDataStalePeriod = time.Minute

MaxUserDataStalePeriod specifies the length of time between user data refresh

View Source
const (

	// OrgDataStalePeriod is the duration after which an org's Updated field is considered stale
	OrgDataStalePeriod = time.Minute
)

Variables

This section is empty.

Functions

func GetEmail

func GetEmail(claims jwt.MapClaims) string

GetEmail extracts email from claims using common email claim keys.

func GetNames

func GetNames(claims jwt.MapClaims) (firstName, lastName string)

GetNames extracts firstName and lastName from claims, splitting firstName if lastName is empty.

func GetUpdatedUserFromHeaders

func GetUpdatedUserFromHeaders(c echo.Context, existingUser cdbm.User, ngcOrgName string, logger zerolog.Logger) (*cdbm.User, *util.APIError)

GetUpdatedUserFromHeaders extracts user information from headers sent by KAS Steps include 1. Extract NGC user name and email from headers 2. Extract NGC roles from headers 3. Extract NGC org display name from headers 4. Update user record if necessary 5. Return updated user record Returns updated user record and API error if any

func GetUserWithUpdatedOrgData

func GetUserWithUpdatedOrgData(existingUser cdbm.User, tokenOrgData cdbm.OrgData, reqOrgName string, logger zerolog.Logger) (*cdbm.User, *util.APIError)

GetUserWithUpdatedOrgData merges the requested org from tokenOrgData into the existing user's OrgData. It only updates the specific org from the request, preserving other orgs. Returns a partial User with updated OrgData if update is needed, or nil if no update needed. Returns an error if the requested org is not found in token claims.

Update is needed if: - Requested org doesn't exist in user's OrgData - Requested org data has changed - Requested org's Updated field is nil or stale (> OrgDataStalePeriod)

func InitializeProcessors

func InitializeProcessors(joCfg *config.JWTOriginConfig, dbSession *cdb.Session, tc temporalClient.Client, encCfg *commonConfig.PayloadEncryptionConfig, kcfg *config.KeycloakConfig)

InitializeProcessors sets up all token processors in the JWTOriginConfig

func NewCustomProcessor

func NewCustomProcessor(dbSession *cdb.Session) config.TokenProcessor

NewCustomProcessor creates a new custom token processor

func NewKASProcessor

NewKASProcessor creates a new KAS token processor

func NewKeycloakProcessor

func NewKeycloakProcessor(dbSession *cdb.Session, kcfg *config.KeycloakConfig) config.TokenProcessor

NewKeycloakProcessor creates a new Keycloak token processor

func NewSSAProcessor

func NewSSAProcessor(dbSession *cdb.Session) config.TokenProcessor

NewSSAProcessor creates a new SSA token processor

Types

type CustomProcessor

type CustomProcessor struct {
	// contains filtered or unexported fields
}

CustomProcessor processes custom external issuer JWT tokens. Supports both service accounts and user tokens with claim mappings.

func (*CustomProcessor) ProcessToken

func (h *CustomProcessor) ProcessToken(c echo.Context, tokenStr string, jwksConfig *config.JwksConfig, logger zerolog.Logger) (*cdbm.User, *util.APIError)

ProcessToken processes custom external issuer JWT tokens Supports: - Service accounts with static roles - User tokens with dynamic roles from claims (via rolesAttribute) - User tokens with static roles (via roles list) - Dynamic org extraction from claims (via orgAttribute) - Static org assignment from config (via orgName) - Issuer-level audience and scope validation (validated FIRST) - Org access validation BEFORE any DB operations

type KASProcessor

type KASProcessor struct {
	// contains filtered or unexported fields
}

KASProcessor processes KAS JWT tokens

func (*KASProcessor) ProcessToken

func (h *KASProcessor) ProcessToken(c echo.Context, tokenStr string, jwksCfg *config.JwksConfig, logger zerolog.Logger) (*cdbm.User, *util.APIError)

HandleToken processes KAS JWT tokens

type KeycloakProcessor

type KeycloakProcessor struct {
	// contains filtered or unexported fields
}

KeycloakProcessor processes Keycloak JWT tokens

func (*KeycloakProcessor) ProcessToken

func (h *KeycloakProcessor) ProcessToken(c echo.Context, tokenStr string, jwksConfig *config.JwksConfig, logger zerolog.Logger) (*cdbm.User, *util.APIError)

HandleToken processes Keycloak JWT tokens

type SSAProcessor

type SSAProcessor struct {
	// contains filtered or unexported fields
}

SSAProcessor processes SSA JWT tokens

func (*SSAProcessor) ProcessToken

func (h *SSAProcessor) ProcessToken(c echo.Context, tokenStr string, jwksCfg *config.JwksConfig, logger zerolog.Logger) (*cdbm.User, *util.APIError)

HandleToken processes SSA JWT tokens

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL