git.iko.soy/typeable/oauth2-proxy
on remove-gap-headers help sign in
51 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 GetEmailAddress(ctx context.Context, s *sessions.SessionState) (string, error)
14 GetUserName(ctx context.Context, s *sessions.SessionState) (string, error)
15 Redeem(ctx context.Context, redirectURI, code string) (*sessions.SessionState, error)
16 ValidateGroup(string) bool
17 ValidateSessionState(ctx context.Context, s *sessions.SessionState) bool
18 GetLoginURL(redirectURI, finalRedirect string) string
19 RefreshSessionIfNeeded(ctx context.Context, s *sessions.SessionState) (bool, error)
20 CreateSessionStateFromBearerToken(ctx context.Context, rawIDToken string, idToken *oidc.IDToken) (*sessions.SessionState, error)
23// New provides a new Provider based on the configured provider string
24func New(provider string, p *ProviderData) Provider {
25 switch provider {
26 case "linkedin":
27 return NewLinkedInProvider(p)
28 case "facebook":
29 return NewFacebookProvider(p)
30 case "github":
31 return NewGitHubProvider(p)
32 case "keycloak":
33 return NewKeycloakProvider(p)
34 case "azure":
35 return NewAzureProvider(p)
36 case "gitlab":
37 return NewGitLabProvider(p)
38 case "oidc":
39 return NewOIDCProvider(p)
40 case "login.gov":
41 return NewLoginGovProvider(p)
42 case "bitbucket":
43 return NewBitbucketProvider(p)
44 case "nextcloud":
45 return NewNextcloudProvider(p)
46 case "digitalocean":
47 return NewDigitalOceanProvider(p)
48 default:
49 return NewGoogleProvider(p)
50 }