瀏覽代碼

feat(go): add support for okta oauth;

Vishal Dalwadi 1 月之前
父節點
當前提交
8b23e9d6ae
共有 4 個文件被更改,包括 17 次插入3 次删除
  1. 2 2
      logic/settings.go
  2. 2 0
      models/settings.go
  3. 4 1
      pro/auth/auth.go
  4. 9 0
      pro/auth/okta.go

+ 2 - 2
logic/settings.go

@@ -240,7 +240,7 @@ func GetAuthProviderInfo(settings models.ServerSettings) (pi []string) {
 	var authProvider = ""
 
 	defer func() {
-		if authProvider == "oidc" {
+		if authProvider == "okta" || authProvider == "oidc" {
 			if settings.OIDCIssuer != "" {
 				pi = append(pi, settings.OIDCIssuer)
 			} else {
@@ -251,7 +251,7 @@ func GetAuthProviderInfo(settings models.ServerSettings) (pi []string) {
 
 	if settings.AuthProvider != "" && settings.ClientID != "" && settings.ClientSecret != "" {
 		authProvider = strings.ToLower(settings.AuthProvider)
-		if authProvider == "google" || authProvider == "azure-ad" || authProvider == "github" || authProvider == "oidc" {
+		if authProvider == "google" || authProvider == "azure-ad" || authProvider == "github" || authProvider == "okta" || authProvider == "oidc" {
 			return []string{authProvider, settings.ClientID, settings.ClientSecret}
 		} else {
 			authProvider = ""

+ 2 - 0
models/settings.go

@@ -19,6 +19,8 @@ type ServerSettings struct {
 	GoogleAdminEmail               string   `json:"google_admin_email"`
 	GoogleSACredsJson              string   `json:"google_sa_creds_json"`
 	AzureTenant                    string   `json:"azure_tenant"`
+	OktaOrgURL                     string   `json:"okta_org_url"`
+	OktaAPIToken                   string   `json:"okta_api_token"`
 	UserFilters                    []string `json:"user_filters"`
 	GroupFilters                   []string `json:"group_filters"`
 	IDPSyncInterval                string   `json:"idp_sync_interval"`

+ 4 - 1
pro/auth/auth.go

@@ -27,6 +27,7 @@ const (
 	google_provider_name   = "google"
 	azure_ad_provider_name = "azure-ad"
 	github_provider_name   = "github"
+	okta_provider_name     = "okta"
 	oidc_provider_name     = "oidc"
 	verify_user            = "verifyuser"
 	user_signin_length     = 16
@@ -85,6 +86,8 @@ func getCurrentAuthFunctions() map[string]interface{} {
 		return azure_ad_functions
 	case github_provider_name:
 		return github_functions
+	case okta_provider_name:
+		return okta_functions
 	case oidc_provider_name:
 		return oidc_functions
 	default:
@@ -124,7 +127,7 @@ func InitializeAuthProvider() string {
 		logger.Log(1, "external OAuth detected, proceeding with https redirect: ("+serverConn+")")
 	}
 
-	if authInfo[0] == "oidc" {
+	if authInfo[0] == "okta" || authInfo[0] == "oidc" {
 		functions[init_provider].(func(string, string, string, string))(serverConn+"/api/oauth/callback", authInfo[1], authInfo[2], authInfo[3])
 		return authInfo[0]
 	}

+ 9 - 0
pro/auth/okta.go

@@ -0,0 +1,9 @@
+package auth
+
+var okta_functions = map[string]interface{}{
+	init_provider:   initOIDC,
+	get_user_info:   getOIDCUserInfo,
+	handle_callback: handleOIDCCallback,
+	handle_login:    handleOIDCLogin,
+	verify_user:     verifyOIDCUser,
+}