Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
MongoDB Branding Shape
Click here >
Docs Menu

Autenticar con el Atlas Go SDK

La atlas-sdk-go librería utiliza la autenticación Digest como su método de autenticación por defecto. Puedes crear una clave API a través de la Interfaz de Usuario de Atlas o del Atlas CLI.

Para saber más sobre la autenticación de API, consulta Autenticación de la API de administración de Atlas.

Para acceder a diferentes partes de la API de administración de Atlas, debes construir un nuevo cliente de Atlas SDK y utilizar sus servicios. Por ejemplo:

package main
import (
"context"
"fmt"
"log"
"os"
"go.mongodb.org/atlas-sdk/v20250312001/admin"
)
func main() {
ctx := context.Background()
apiKey := os.Getenv("MONGODB_ATLAS_PUBLIC_KEY")
apiSecret := os.Getenv("MONGODB_ATLAS_PRIVATE_KEY")
sdk, err := admin.NewClient(admin.UseDigestAuth(apiKey, apiSecret))
if err != nil {
log.Fatalf("Error instantiating new client: %v", err)
}
projects, response, err := sdk.ProjectsApi.ListProjects(ctx).Execute()
if err != nil {
log.Fatalf("Could not fetch projects: %v", err)
}
fmt.Printf("Response status: %v\n", response.Status)
fmt.Printf("Projects: %v\n", projects)
}

Atlas SDK Go proporciona autenticación OAuth mediante cuentas de servicio. Actualmente, esto está disponible como una funcionalidad de Vista previa. Para obtener más información, consulta Funcionalidades de vista previa.

Una Cuenta de servicio implementa una concesión OAuth client_credentials. Para obtener más información sobre la funcionalidad, consulte la documentación pública de la Cuenta de servicio.

Autenticación con cuentas de servicio

package main
import (
"context"
"log"
"os"
"go.mongodb.org/atlas-sdk/v20250312001/admin"
)
func main() {
clientID := os.Getenv("MONGODB_ATLAS_CLIENT_ID")
clientSecret := os.Getenv("MONGODB_ATLAS_CLIENT_SECRET")
if clientID == "" || clientSecret == "" {
log.Fatal("Missing CLIENT_ID or CLIENT_SECRET environment variables")
}
// Using ClientID and ClientSecret. No cache supported (nil).
sdk, err := admin.NewClient(admin.UseOAuthAuth(context.Background(), clientID, clientSecret))
// Make API calls
}

Para obtener una implementación completa de referencia, consulta ejemplo de cuenta de servicio

La revocación inhabilita un token de OAuth antes de su fecha de expiración. Esto "cierra la sesión" del cliente OAuth actual y le permite configurar un nuevo cliente.

// Sounding code omitted for brevity
revokeConfig := credentials.NewConfig(clientID, clientSecret)
revokeConfig.RevokeToken(context.Background(), &auth.Token{
AccessToken: "yourTokenHere"
});

La validez de los tokens de acceso OAuth de la cuenta de servicio se expresa como un número de segundos en el campo expires_in. Los clientes pueden almacenar en caché estos tokens de acceso para reducir la limitación de la tasa y cumplir con los límites de los tokens de acceso.

Para obtener un ejemplo de cómo almacenar en caché y reutilizar tokens OAuth en el Atlas SDK para Go, consulta Almacenamiento en Caché de Tokens OAuth para Cuentas de Servicio Ejemplo de almacenamiento en caché de tokens OAuth para cuentas de servicio.