id4me

package
v0.0.0-...-42dd1ba Latest Latest
Warning

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

Go to latest
Published: Jun 14, 2022 License: GPL-2.0 Imports: 16 Imported by: 0

Documentation

Index

Constants

View Source
const (
	UserInfoClaim = "userinfo"
	IdToken       = "id_token"
)

Variables

This section is empty.

Functions

func LookupOidTxt

func LookupOidTxt(qname string, nameservers []string) (string, error)

func ParseRecord

func ParseRecord(record string) (map[string]string, error)

func SanatizeEmail

func SanatizeEmail(strId string) (string, error)

Types

type Authority

type Authority struct {
	Issuer       url.URL
	OidcProvider oidc.Provider
	Client       ClientConfig
}

func NewAuthority

func NewAuthority(ctx context.Context, issuerStr string) (*Authority, error)

func (*Authority) GetOAuth2Config

func (a *Authority) GetOAuth2Config(config *RedirectURLConfig) oauth2.Config

func (*Authority) GetRedirectUrl

func (a *Authority) GetRedirectUrl(config *RedirectURLConfig) (string, error)

func (*Authority) GetUserInfo

func (a *Authority) GetUserInfo(ctx context.Context, config *RedirectURLConfig, code string) (*ResultClaims, error)

func (*Authority) RegisterClient

func (a *Authority) RegisterClient(ctx context.Context, opts ClientOpts) error

type Claim

type Claim struct {
	Essential bool   `json:"essential,omitempty"`
	Reason    string `json:"reason,omitempty"`
}

TODO: Rename to ClaimRequest

type ClaimSource

type ClaimSource struct {
	Endpoint    string `json:"endpoint"`
	AccessToken string `json:"access_token"`
	UserInfo    map[string]interface{}
}

type ClaimType

type ClaimType int
const (
	STRING_TYPE ClaimType = iota
	NUMBER_TYPE
	DATE_TYPE
)

type Claims

type Claims struct {
	UserInfo map[string]*Claim `json:"userinfo,omitempty"`
	IdToken  map[string]*Claim `json:"id_token,omitempty"`
}

TODO: Rename to ClaimsRequest

func NewClaims

func NewClaims() *Claims

func (*Claims) AddClaim

func (c *Claims) AddClaim(claimType string, name string, claim *Claim) error

func (*Claims) Empty

func (c *Claims) Empty() bool

func (*Claims) Encode

func (c *Claims) Encode() (string, error)

type ClientConfig

type ClientConfig struct {
	ClientId                string
	ClientSecret            string
	ClientRegistrationUri   string
	RegistrationAccessToken string
	ClientSecretExpiresAt   *time.Time
	ClientIdIssuedAt        *time.Time
}

type ClientOpts

type ClientOpts struct {
	ClientName string `json:"client_name"`

	RedirectUris    []string `json:"redirect_uris"`
	ApplicationType string   `json:"application_type,omitempty"`
	Contacts        []string `json:"contacts,omitempty"`
	LogoUri         string   `json:"logo_uri,omitempty"`
	ClientUri       string   `json:"client_uri,omitempty"`
	PolicyUri       string   `json:"policy_uri,omitempty"`
	TosUri          string   `json:"tos_uri,omitempty"`

	// TODO: check what are those
	DefaultMaxAge    uint   `json:"default_max_age,omitempty"`
	RequireAuthTime  bool   `json:"require_auth_time,omitempty"`
	InitiateLoginUri string `json:"initiate_login_uri,omitempty"`
}

type DistributedClaims

type DistributedClaims struct {
	Names   map[string]string       `json:"_claim_names"`
	Sources map[string]*ClaimSource `json:"_claim_sources"`
}

type Identifier

type Identifier struct {
	Input string
	Name  string
}

func NewIdentifier

func NewIdentifier(strId string) (*Identifier, error)

func (*Identifier) ResolveAuthorityWithNS

func (id *Identifier) ResolveAuthorityWithNS(nameservers []string) (string, error)

type RedirectURLConfig

type RedirectURLConfig struct {
	Identifier *Identifier
	Claims     Claims
	Scopes     []string
	Callback   string
	State      string
}

func NewRedirectURLConfig

func NewRedirectURLConfig(callBack string, state string) *RedirectURLConfig

type ResultClaims

type ResultClaims struct {
	AuthorityUserInfo map[string]interface{}
	DistributedClaims DistributedClaims
}

func (*ResultClaims) Get

func (c *ResultClaims) Get(name string) interface{}

func (*ResultClaims) GetClaims

func (c *ResultClaims) GetClaims(request map[string]*Claim) map[string]interface{}

Jump to

Keyboard shortcuts

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