feat(api): add oidc and jwt provider template (#5290)

Adds possibility to manage OIDC and JWT template based providers
This commit is contained in:
Livio Spring
2023-02-27 16:32:18 +01:00
committed by GitHub
parent 9396e8b2f5
commit 80003939ad
29 changed files with 4338 additions and 295 deletions

View File

@@ -80,6 +80,10 @@ func RegisterEventMappers(es *eventstore.Eventstore) {
RegisterFilterEventMapper(AggregateType, IDPJWTConfigChangedEventType, IDPJWTConfigChangedEventMapper).
RegisterFilterEventMapper(AggregateType, OAuthIDPAddedEventType, OAuthIDPAddedEventMapper).
RegisterFilterEventMapper(AggregateType, OAuthIDPChangedEventType, OAuthIDPChangedEventMapper).
RegisterFilterEventMapper(AggregateType, OIDCIDPAddedEventType, OIDCIDPAddedEventMapper).
RegisterFilterEventMapper(AggregateType, OIDCIDPChangedEventType, OIDCIDPChangedEventMapper).
RegisterFilterEventMapper(AggregateType, JWTIDPAddedEventType, JWTIDPAddedEventMapper).
RegisterFilterEventMapper(AggregateType, JWTIDPChangedEventType, JWTIDPChangedEventMapper).
RegisterFilterEventMapper(AggregateType, GoogleIDPAddedEventType, GoogleIDPAddedEventMapper).
RegisterFilterEventMapper(AggregateType, GoogleIDPChangedEventType, GoogleIDPChangedEventMapper).
RegisterFilterEventMapper(AggregateType, LDAPIDPAddedEventType, LDAPIDPAddedEventMapper).

View File

@@ -12,6 +12,10 @@ import (
const (
OAuthIDPAddedEventType eventstore.EventType = "org.idp.oauth.added"
OAuthIDPChangedEventType eventstore.EventType = "org.idp.oauth.changed"
OIDCIDPAddedEventType eventstore.EventType = "org.idp.oidc.added"
OIDCIDPChangedEventType eventstore.EventType = "org.idp.oidc.changed"
JWTIDPAddedEventType eventstore.EventType = "org.idp.jwt.added"
JWTIDPChangedEventType eventstore.EventType = "org.idp.jwt.changed"
GoogleIDPAddedEventType eventstore.EventType = "org.idp.google.added"
GoogleIDPChangedEventType eventstore.EventType = "org.idp.google.changed"
LDAPIDPAddedEventType eventstore.EventType = "org.idp.ldap.added"
@@ -101,6 +105,162 @@ func OAuthIDPChangedEventMapper(event *repository.Event) (eventstore.Event, erro
return &OAuthIDPChangedEvent{OAuthIDPChangedEvent: *e.(*idp.OAuthIDPChangedEvent)}, nil
}
type OIDCIDPAddedEvent struct {
idp.OIDCIDPAddedEvent
}
func NewOIDCIDPAddedEvent(
ctx context.Context,
aggregate *eventstore.Aggregate,
id,
name,
issuer,
clientID string,
clientSecret *crypto.CryptoValue,
scopes []string,
options idp.Options,
) *OIDCIDPAddedEvent {
return &OIDCIDPAddedEvent{
OIDCIDPAddedEvent: *idp.NewOIDCIDPAddedEvent(
eventstore.NewBaseEventForPush(
ctx,
aggregate,
OIDCIDPAddedEventType,
),
id,
name,
issuer,
clientID,
clientSecret,
scopes,
options,
),
}
}
func OIDCIDPAddedEventMapper(event *repository.Event) (eventstore.Event, error) {
e, err := idp.OIDCIDPAddedEventMapper(event)
if err != nil {
return nil, err
}
return &OIDCIDPAddedEvent{OIDCIDPAddedEvent: *e.(*idp.OIDCIDPAddedEvent)}, nil
}
type OIDCIDPChangedEvent struct {
idp.OIDCIDPChangedEvent
}
func NewOIDCIDPChangedEvent(
ctx context.Context,
aggregate *eventstore.Aggregate,
id string,
changes []idp.OIDCIDPChanges,
) (*OIDCIDPChangedEvent, error) {
changedEvent, err := idp.NewOIDCIDPChangedEvent(
eventstore.NewBaseEventForPush(
ctx,
aggregate,
OIDCIDPChangedEventType,
),
id,
changes,
)
if err != nil {
return nil, err
}
return &OIDCIDPChangedEvent{OIDCIDPChangedEvent: *changedEvent}, nil
}
func OIDCIDPChangedEventMapper(event *repository.Event) (eventstore.Event, error) {
e, err := idp.OIDCIDPChangedEventMapper(event)
if err != nil {
return nil, err
}
return &OIDCIDPChangedEvent{OIDCIDPChangedEvent: *e.(*idp.OIDCIDPChangedEvent)}, nil
}
type JWTIDPAddedEvent struct {
idp.JWTIDPAddedEvent
}
func NewJWTIDPAddedEvent(
ctx context.Context,
aggregate *eventstore.Aggregate,
id,
name,
issuer,
jwtEndpoint,
keysEndpoint,
headerName string,
options idp.Options,
) *JWTIDPAddedEvent {
return &JWTIDPAddedEvent{
JWTIDPAddedEvent: *idp.NewJWTIDPAddedEvent(
eventstore.NewBaseEventForPush(
ctx,
aggregate,
JWTIDPAddedEventType,
),
id,
name,
issuer,
jwtEndpoint,
keysEndpoint,
headerName,
options,
),
}
}
func JWTIDPAddedEventMapper(event *repository.Event) (eventstore.Event, error) {
e, err := idp.JWTIDPAddedEventMapper(event)
if err != nil {
return nil, err
}
return &JWTIDPAddedEvent{JWTIDPAddedEvent: *e.(*idp.JWTIDPAddedEvent)}, nil
}
type JWTIDPChangedEvent struct {
idp.JWTIDPChangedEvent
}
func NewJWTIDPChangedEvent(
ctx context.Context,
aggregate *eventstore.Aggregate,
id string,
changes []idp.JWTIDPChanges,
) (*JWTIDPChangedEvent, error) {
changedEvent, err := idp.NewJWTIDPChangedEvent(
eventstore.NewBaseEventForPush(
ctx,
aggregate,
JWTIDPChangedEventType,
),
id,
changes,
)
if err != nil {
return nil, err
}
return &JWTIDPChangedEvent{JWTIDPChangedEvent: *changedEvent}, nil
}
func JWTIDPChangedEventMapper(event *repository.Event) (eventstore.Event, error) {
e, err := idp.JWTIDPChangedEventMapper(event)
if err != nil {
return nil, err
}
return &JWTIDPChangedEvent{JWTIDPChangedEvent: *e.(*idp.JWTIDPChangedEvent)}, nil
}
type GoogleIDPAddedEvent struct {
idp.GoogleIDPAddedEvent
}
@@ -275,7 +435,6 @@ func NewIDPRemovedEvent(
ctx context.Context,
aggregate *eventstore.Aggregate,
id string,
name string,
) *IDPRemovedEvent {
return &IDPRemovedEvent{
RemovedEvent: *idp.NewRemovedEvent(
@@ -285,7 +444,6 @@ func NewIDPRemovedEvent(
IDPRemovedEventType,
),
id,
name,
),
}
}