replaced authentik with generic oidc provider

This commit is contained in:
Gani Georgiev
2023-02-23 21:07:00 +02:00
parent e529fe7e2a
commit aa4e405f92
55 changed files with 495 additions and 330 deletions
+6 -2
View File
@@ -112,10 +112,14 @@ func NewProviderByName(name string) (Provider, error) {
return NewGiteeProvider(), nil
case NameLivechat:
return NewLivechatProvider(), nil
case NameAuthentik:
return NewAuthentikProvider(), nil
case NameGitea:
return NewGiteaProvider(), nil
case NameOIDC:
return NewOIDCProvider(), nil
case NameOIDC + "2":
return NewOIDCProvider(), nil
case NameOIDC + "3":
return NewOIDCProvider(), nil
default:
return nil, errors.New("Missing provider " + name)
}
+27 -9
View File
@@ -136,15 +136,6 @@ func TestNewProviderByName(t *testing.T) {
t.Error("Expected to be instance of *auth.Livechat")
}
// authentik
p, err = auth.NewProviderByName(auth.NameAuthentik)
if err != nil {
t.Errorf("Expected nil, got error %v", err)
}
if _, ok := p.(*auth.Authentik); !ok {
t.Error("Expected to be instance of *auth.Authentik")
}
// gitea
p, err = auth.NewProviderByName(auth.NameGitea)
if err != nil {
@@ -153,4 +144,31 @@ func TestNewProviderByName(t *testing.T) {
if _, ok := p.(*auth.Gitea); !ok {
t.Error("Expected to be instance of *auth.Gitea")
}
// oidc
p, err = auth.NewProviderByName(auth.NameOIDC)
if err != nil {
t.Errorf("Expected nil, got error %v", err)
}
if _, ok := p.(*auth.OIDC); !ok {
t.Error("Expected to be instance of *auth.OIDC")
}
// oidc2
p, err = auth.NewProviderByName(auth.NameOIDC + "2")
if err != nil {
t.Errorf("Expected nil, got error %v", err)
}
if _, ok := p.(*auth.OIDC); !ok {
t.Error("Expected to be instance of *auth.OIDC")
}
// oidc3
p, err = auth.NewProviderByName(auth.NameOIDC + "3")
if err != nil {
t.Errorf("Expected nil, got error %v", err)
}
if _, ok := p.(*auth.OIDC); !ok {
t.Error("Expected to be instance of *auth.OIDC")
}
}
+11 -11
View File
@@ -6,19 +6,19 @@ import (
"golang.org/x/oauth2"
)
var _ Provider = (*Authentik)(nil)
var _ Provider = (*OIDC)(nil)
// NameAuthentik is the unique name of the Authentik provider.
const NameAuthentik string = "authentik"
// NameOIDC is the unique name of the OpenID Connect (OIDC) provider.
const NameOIDC string = "oidc"
// Authentik allows authentication via Authentik OAuth2.
type Authentik struct {
// OIDC allows authentication via OpenID Connect (OIDC) OAuth2 provider.
type OIDC struct {
*baseProvider
}
// NewAuthentikProvider creates new Authentik provider instance with some defaults.
func NewAuthentikProvider() *Authentik {
return &Authentik{&baseProvider{
// NewOIDCProvider creates new OpenID Connect (OIDC) provider instance with some defaults.
func NewOIDCProvider() *OIDC {
return &OIDC{&baseProvider{
scopes: []string{
"openid", // minimal requirement to return the id
"email",
@@ -27,10 +27,10 @@ func NewAuthentikProvider() *Authentik {
}}
}
// FetchAuthUser returns an AuthUser instance based the Authentik's user api.
// FetchAuthUser returns an AuthUser instance based the provider's user api.
//
// API reference: https://goauthentik.io/docs/providers/oauth2/
func (p *Authentik) FetchAuthUser(token *oauth2.Token) (*AuthUser, error) {
// API reference: https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims
func (p *OIDC) FetchAuthUser(token *oauth2.Token) (*AuthUser, error) {
data, err := p.FetchRawUserData(token)
if err != nil {
return nil, err