ultisuite-backend/internal/authentik/presets.go
R3D347HR4Y d3c930cac6
Some checks are pending
CI / Go tests (push) Waiting to run
CI / Integration tests (push) Waiting to run
CI / DB migrations (push) Waiting to run
feat(identity-providers): add management for identity providers in admin API
- Introduced new endpoints for managing identity providers, including retrieval of redirect URIs and testing/syncing providers.
- Enhanced organization settings to include identity provider configurations, allowing for self-enrollment and domain restrictions.
- Implemented caching for access policies and added validation for identity provider secrets.
- Added integration tests to ensure proper functionality of identity provider management and policy enforcement.
2026-06-09 09:36:38 +02:00

83 lines
2.5 KiB
Go

package authentik
import "strings"
type OAuthPreset struct {
ProviderType string
AuthorizationURL string
AccessTokenURL string
ProfileURL string
DefaultScopes string
OrganizationClaim string
}
func OAuthPresetFor(provider string) OAuthPreset {
switch strings.ToLower(strings.TrimSpace(provider)) {
case "google":
return OAuthPreset{
ProviderType: "google",
AuthorizationURL: "https://accounts.google.com/o/oauth2/auth",
AccessTokenURL: "https://oauth2.googleapis.com/token",
ProfileURL: "https://www.googleapis.com/oauth2/v1/userinfo",
DefaultScopes: "openid email profile",
OrganizationClaim: "hd",
}
case "github":
return OAuthPreset{
ProviderType: "github",
AuthorizationURL: "https://github.com/login/oauth/authorize",
AccessTokenURL: "https://github.com/login/oauth/access_token",
ProfileURL: "https://api.github.com/user",
DefaultScopes: "read:user user:email",
OrganizationClaim: "org",
}
case "linkedin":
return OAuthPreset{
ProviderType: "openidconnect",
AuthorizationURL: "https://www.linkedin.com/oauth/v2/authorization",
AccessTokenURL: "https://www.linkedin.com/oauth/v2/accessToken",
ProfileURL: "https://api.linkedin.com/v2/userinfo",
DefaultScopes: "openid profile email",
OrganizationClaim: "",
}
case "microsoft":
return OAuthPreset{
ProviderType: "azuread",
AuthorizationURL: "https://login.microsoftonline.com/common/oauth2/v2.0/authorize",
AccessTokenURL: "https://login.microsoftonline.com/common/oauth2/v2.0/token",
ProfileURL: "https://graph.microsoft.com/oidc/userinfo",
DefaultScopes: "openid email profile",
OrganizationClaim: "tid",
}
default:
return OAuthPreset{
ProviderType: "openidconnect",
DefaultScopes: "openid email profile",
}
}
}
func OAuthRedirectURI(publicBaseURL, slug string) string {
base := strings.TrimRight(strings.TrimSpace(publicBaseURL), "/")
if base == "" {
base = "http://localhost/auth"
}
return base + "/source/oauth/callback/" + strings.TrimSpace(slug) + "/"
}
func AuthentikPublicBaseURL(apiURL string, publicHTTPS bool) string {
apiURL = strings.TrimSpace(apiURL)
if apiURL == "" {
if publicHTTPS {
return "https://localhost/auth"
}
return "http://localhost/auth"
}
u := strings.TrimSuffix(apiURL, "/")
u = strings.TrimSuffix(u, "/api/v3")
if publicHTTPS && strings.HasPrefix(u, "http://") {
u = "https://" + strings.TrimPrefix(u, "http://")
}
return u
}