api

package
v0.0.0-...-7affffb Latest Latest
Warning

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

Go to latest
Published: Sep 30, 2021 License: MIT Imports: 25 Imported by: 0

Documentation

Index

Constants

View Source
const (

	// ZoneFss is secure zone
	ZoneFss = "fss"
	// ZoneSbs is or outer zone
	ZoneSbs = "sbs"
)
View Source
const (
	ResourceTypeOIDC   = "OpenIdConnect"
	ResourceTypeOpenAM = "OpenAM"
)
View Source
const POLICY = "am.policy"

POLICY sets the policy name on AM server

Variables

This section is empty.

Functions

func CopyFilesToAmServer

func CopyFilesToAmServer(sshClient *ssh.Client, policyFiles []string, application string) error

CopyFilesToAmServer sftps policy files to desired AM host

func CreateRedirectionUris

func CreateRedirectionUris(issoResource *IssoResource, request *NamedConfigurationRequest) []string

CreateRedirectionUris creates a list of uris for which to configure the openam agent

func FormatAmHeaderString

func FormatAmHeaderString(headerString string) string

FormatAmHeaderString used to format user and password for OpenAM (ref RFC2047)

func GenerateAmFiles

func GenerateAmFiles(request *NamedConfigurationRequest) ([]string, error)

GenerateAmFiles returns array of validated and downloaded policy files

func GetDomainsFromZoneAndEnvironmentClass

func GetDomainsFromZoneAndEnvironmentClass(environmentClass, zone string) (string, string, string)

GetDomainFromZoneAndEnvironmentClass returns domain string

func GetZone

func GetZone(clusterName string) string

GetZone returns zone name for the cluster

func InsertPortNumber

func InsertPortNumber(originalUrl string, port int) (string, error)

func SSHConnect

func SSHConnect(resource *OpenAmResource, port string) (*ssh.Client, *ssh.Session, error)

SSHConnect returns ssh client and session for specified host

func SftpConnect

func SftpConnect(sshClient *ssh.Client) (*sftp.Client, error)

SftpConnect returns sftp client for existing ssh client

func UpdatePolicyFiles

func UpdatePolicyFiles(policyFiles []string, environment string) error

UpdatePolicyFiles replaces ${DomainName} with correct site name in policy files

Types

type AMConnection

type AMConnection struct {
	BaseURL  string
	User     string
	Password string

	Realm string
	// contains filtered or unexported fields
}

AMConnection contains values for basic connection to AM

func GetAmConnection

func GetAmConnection(issoResource *IssoResource) (am *AMConnection, err error)

GetAmConnection returns connection to AM server

func (*AMConnection) AgentExists

func (am *AMConnection) AgentExists(agentName string) bool

AgentExists verifies existence of am agent

func (*AMConnection) Authenticate

func (am *AMConnection) Authenticate() error

Authenticate connects to AM server and sets tokenID in AMConnection struct

func (*AMConnection) CreateAgent

func (am *AMConnection) CreateAgent(agentName string, redirectionUris []string, issoResource *IssoResource,
	namedConfigurationRequest *NamedConfigurationRequest) error

CreateAgent creates am agent on isso server

func (*AMConnection) CreatePolicies

func (am *AMConnection) CreatePolicies(obj *crest.FRObject, overWrite, continueOnError bool) (err error)

CreatePolicies creates policies in AM instance. If continueOnError is true, keep trying to create policies even if a single create fails. If overWrite is true, First delete the policy and then create it

func (*AMConnection) CreatePolicy

func (am *AMConnection) CreatePolicy(p map[string]interface{}, overWrite bool, realm string) (err error)

CreatePolicy creates a single policy described by the json

func (*AMConnection) DeleteAgent

func (am *AMConnection) DeleteAgent(agentName string) error

DeleteAgent deletes am agent on isso server

func (*AMConnection) DeletePolicy

func (am *AMConnection) DeletePolicy(name, realm string) (err error)

DeletePolicy erases the named policy. If the policy does exist, we do not return an error code

func (*AMConnection) ExportPolicies

func (am *AMConnection) ExportPolicies(format, realm string) (out string, err error)

ExportPolicies exports all the policies as a JSON or YAML policy set string

func (*AMConnection) ExportXacmlPolicies

func (am *AMConnection) ExportXacmlPolicies() (string, error)

ExportXacmlPolicies exports all the policies as a XACML policy set

func (*AMConnection) ListResourceTypes

func (am *AMConnection) ListResourceTypes() ([]ResourceType, error)

ListResourceTypes returns the available resource types from the AM server

type API

type API struct {
	FasitURL    string
	ClusterName string
}

API contains fasit instance and cluster to fetch AM information from

func NewAPI

func NewAPI(fasitURL, clusterName string) *API

NewAPI initializes fasit instance information

func (*API) MakeHandler

func (api *API) MakeHandler() http.Handler

MakeHandler creates REST endpoint handlers

type AppError

type AppError struct {
	OriginalError error
	Message       string
	StatusCode    int
}

AppError collects error message and status code from http responses

func (AppError) Code

func (e AppError) Code() int

Code returns status code of AppError

func (AppError) Error

func (e AppError) Error() string

Error returns the error as a formatted string

type AuthNResponse

type AuthNResponse struct {
	TokenID    string `json:"tokenId"`
	SuccessURL string `json:"successUrl"`
}

AuthNResponse contains values for further AM processes

type FasitClient

type FasitClient struct {
	FasitURL string
	Username string
	Password string
}

FasitClient contains fasit connection details

func (FasitClient) CreateFasitResourceForOpenIDConnect

func (fasit FasitClient) CreateFasitResourceForOpenIDConnect(issoResource IssoResource, request *NamedConfigurationRequest, zone string) (FasitResource, *AppError)

func (FasitClient) GetFasitApplication

func (fasit FasitClient) GetFasitApplication(application string) *AppError

GetFasitApplication returns nil if application exists in Fasit

func (FasitClient) GetFasitEnvironment

func (fasit FasitClient) GetFasitEnvironment(environmentName string) (string, *AppError)

GetFasitEnvironment converts Fasit environment name to environment class

func (FasitClient) GetIngressURL

func (fasit FasitClient) GetIngressURL(request *NamedConfigurationRequest, zone string) ([]string, error)

GetIngressURL creates ingress urls from environment class and zone

func (FasitClient) GetIssoResource

func (fasit FasitClient) GetIssoResource(request *NamedConfigurationRequest, zone string) (IssoResource, *AppError)

GetIssoResource fetches necessary ISSO and OIDC resources from fasit

func (FasitClient) GetOpenAmResource

func (fasit FasitClient) GetOpenAmResource(resourcesRequest ResourceRequest, fasitEnvironment, application, zone string) (OpenAmResource, *AppError)

GetOpenAmResource fetches necessary OpenAM resources from fasit

func (FasitClient) PostFasitResource

func (fasit FasitClient) PostFasitResource(resource FasitResource, request *NamedConfigurationRequest) *AppError

func (FasitClient) UpdateFasitResource

func (fasit FasitClient) UpdateFasitResource(resource FasitResource, request *NamedConfigurationRequest) *AppError

type FasitResource

type FasitResource struct {
	ID           int
	Alias        string                       `json:"alias"`
	ResourceType string                       `json:"type"`
	Scope        scope                        `json:"scope"`
	Properties   map[string]string            `json:"properties"`
	Secrets      map[string]map[string]string `json:"secrets"`
}

FasitResource contains resource information from fasit

type IssoResource

type IssoResource struct {
	IssoIssuerURL string
	IssoJwksURL   string
	// contains filtered or unexported fields
}

IssoResource contains information about the OIDC server as set in fasit

type NamedConfigurationRequest

type NamedConfigurationRequest struct {
	Application     string   `json:"application"`
	Version         string   `json:"version"`
	Environment     string   `json:"environment"`
	Username        string   `json:"username"`
	Password        string   `json:"password"`
	ContextRoots    []string `json:"contextroots"`
	RedirectionUris []string
}

NamedConfigurationRequest contains the information of the application to configure in AM

func (NamedConfigurationRequest) Validate

func (r NamedConfigurationRequest) Validate(zone string) []error

Validate performs validation of NamedConfigurationRequest

type OpenAmResource

type OpenAmResource struct {
	Hostname string
	Username string
	Password string
}

OpenAmResource contains information about the AM server as set in fasit

type Password

type Password struct {
	Ref string `json:"ref"`
}

Password contains fasit reference to the password

type Policy

type Policy struct {
	Name             string      `json:"name"`
	Active           bool        `json:"active"`
	ApplicationName  string      `json:"applicationName"`
	ActionValues     interface{} `json:"actionValues"`
	Resources        []string    `json:"resources"`
	Description      string      `json:"description"`
	Subject          interface{} `json:"subject"`
	Condition        interface{} `json:"condition"`
	ResourceTypeUUID string      `json:"resourceTypeUuid"`
	CreatedBy        string      `json:"createdBy"`
	CreationDate     string      `json:"creationDate"`
	LastModifiedBy   string      `json:"lastModifiedBy"`
	LastModifiedDate string      `json:"lastModifiedDate"`
}

Policy in AMConnection

func ListPolicy

func ListPolicy(am *AMConnection) ([]Policy, error)

ListPolicy lists all OpenAM policies for a realm

type PolicyResultList

type PolicyResultList struct {
	Result                []Policy `json:"result"`
	ResultCount           int64    `json:"resultCount"`
	PagedResultsCookie    string   `json:"pagedResultsCookie"`
	RemainingPagedResults int64    `json:"remainingPagedResults"`
}

A PolicyResultList is a set of Policies

type Resource

type Resource struct {
	ID int `json:"id"`
}

Resource contains resource id as set in fasit

type ResourceRequest

type ResourceRequest struct {
	Alias        string
	ResourceType string
}

ResourceRequest contains the alias and resource type for the fasit resource

type ResourceType

type ResourceType struct {
	UUID             string      `json:"uuid"`
	Name             string      `json:"name"`
	Description      string      `json:"description"`
	Patterns         []string    `json:"patterns"`
	Actions          interface{} `json:"actions"`
	CreatedBy        string      `json:"createdBy"`
	CreationDate     int64       `json:"creationDate"`
	LastModifiedBy   string      `json:"lastModifiedBy"`
	LastModifiedDate int64       `json:"lastModifiedDate"`
}

ResourceType contains the AM resource type

type ResourceTypeResult

type ResourceTypeResult struct {
	Result                []ResourceType `json:"result"`
	ResultCount           int64          `json:"resultCount"`
	PagedResultsCookie    string         `json:"pagedResultsCookie"`
	RemainingPagedResults int64          `json:"remainingPagedResults"`
}

ResourceTypeResult contains the AM result values when fetching resources

type ValidationError

type ValidationError struct {
	ErrorMessage string
	Fields       map[string]string
}

ValidationError contains error and fields of destruction

type ValidationErrors

type ValidationErrors struct {
	Errors []ValidationError
}

ValidationErrors contains all validation errors

func ValidatePolicyFiles

func ValidatePolicyFiles(fileNames []string) ValidationErrors

ValidatePolicyFiles validates the policy xml files, checking the file type

func (ValidationErrors) Error

func (errors ValidationErrors) Error() (s string)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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