mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-10 10:29:17 +00:00
70 lines
1.6 KiB
Go
70 lines
1.6 KiB
Go
package util
|
|
|
|
import (
|
|
"github.com/Infisical/infisical-merge/packages/models"
|
|
)
|
|
|
|
type AuthStrategyType string
|
|
|
|
var AuthStrategy = struct {
|
|
UNIVERSAL_AUTH AuthStrategyType
|
|
KUBERNETES_AUTH AuthStrategyType
|
|
AZURE_AUTH AuthStrategyType
|
|
GCP_ID_TOKEN_AUTH AuthStrategyType
|
|
GCP_IAM_AUTH AuthStrategyType
|
|
AWS_IAM_AUTH AuthStrategyType
|
|
OIDC_AUTH AuthStrategyType
|
|
}{
|
|
UNIVERSAL_AUTH: "universal-auth",
|
|
KUBERNETES_AUTH: "kubernetes",
|
|
AZURE_AUTH: "azure",
|
|
GCP_ID_TOKEN_AUTH: "gcp-id-token",
|
|
GCP_IAM_AUTH: "gcp-iam",
|
|
AWS_IAM_AUTH: "aws-iam",
|
|
OIDC_AUTH: "oidc-auth",
|
|
}
|
|
|
|
var AVAILABLE_AUTH_STRATEGIES = []AuthStrategyType{
|
|
AuthStrategy.UNIVERSAL_AUTH,
|
|
AuthStrategy.KUBERNETES_AUTH,
|
|
AuthStrategy.AZURE_AUTH,
|
|
AuthStrategy.GCP_ID_TOKEN_AUTH,
|
|
AuthStrategy.GCP_IAM_AUTH,
|
|
AuthStrategy.AWS_IAM_AUTH,
|
|
AuthStrategy.OIDC_AUTH,
|
|
}
|
|
|
|
func IsAuthMethodValid(authMethod string, allowUserAuth bool) (isValid bool, strategy AuthStrategyType) {
|
|
|
|
if authMethod == "user" && allowUserAuth {
|
|
return true, ""
|
|
}
|
|
|
|
for _, strategy := range AVAILABLE_AUTH_STRATEGIES {
|
|
if string(strategy) == authMethod {
|
|
return true, strategy
|
|
}
|
|
}
|
|
return false, ""
|
|
}
|
|
|
|
func ShouldUseInfisicalToken(token *models.TokenDetails, validTokenTypes []string) bool {
|
|
if token == nil {
|
|
return false
|
|
}
|
|
|
|
// If nil is passed, we assume both service and universal tokens are acceptable.
|
|
if validTokenTypes == nil {
|
|
validTokenTypes = []string{SERVICE_TOKEN_IDENTIFIER, UNIVERSAL_AUTH_TOKEN_IDENTIFIER}
|
|
}
|
|
|
|
for _, tokenType := range validTokenTypes {
|
|
if token.Type == tokenType {
|
|
return true
|
|
}
|
|
}
|
|
|
|
return false
|
|
|
|
}
|