git.iko.soy/typeable/oauth2-proxy
on proxy-mapping help sign in
52 lines 1.6 kB history raw
1package providers
3import (
4 "context"
6 "github.com/coreos/go-oidc"
7 "github.com/oauth2-proxy/oauth2-proxy/v7/pkg/apis/sessions"
8)
10// Provider represents an upstream identity provider implementation
11type Provider interface {
12 Data() *ProviderData
13 // DEPRECATED: Migrate to EnrichSessionState
14 GetEmailAddress(ctx context.Context, s *sessions.SessionState) (string, error)
15 Redeem(ctx context.Context, redirectURI, code string) (*sessions.SessionState, error)
16 ValidateGroup(string) bool
17 EnrichSessionState(ctx context.Context, s *sessions.SessionState) error
18 ValidateSessionState(ctx context.Context, s *sessions.SessionState) bool
19 GetLoginURL(redirectURI, finalRedirect string) string
20 RefreshSessionIfNeeded(ctx context.Context, s *sessions.SessionState) (bool, error)
21 CreateSessionStateFromBearerToken(ctx context.Context, rawIDToken string, idToken *oidc.IDToken) (*sessions.SessionState, error)
24// New provides a new Provider based on the configured provider string
25func New(provider string, p *ProviderData) Provider {
26 switch provider {
27 case "linkedin":
28 return NewLinkedInProvider(p)
29 case "facebook":
30 return NewFacebookProvider(p)
31 case "github":
32 return NewGitHubProvider(p)
33 case "keycloak":
34 return NewKeycloakProvider(p)
35 case "azure":
36 return NewAzureProvider(p)
37 case "gitlab":
38 return NewGitLabProvider(p)
39 case "oidc":
40 return NewOIDCProvider(p)
41 case "login.gov":
42 return NewLoginGovProvider(p)
43 case "bitbucket":
44 return NewBitbucketProvider(p)
45 case "nextcloud":
46 return NewNextcloudProvider(p)
47 case "digitalocean":
48 return NewDigitalOceanProvider(p)
49 default:
50 return NewGoogleProvider(p)
51 }