使用Atlas Go SDK 进行身份验证
atlas-sdk-go
库利用摘要式身份验证作为其默认身份验证方法。您可以通过Atlas用户界面或Atlas CLI 创建API密钥。
要学习;了解有关API身份验证的更多信息,请参阅Atlas Administration API身份验证。
在代码中使用Atlas Go SDK 并进行摘要式身份验证
要访问权限Atlas Admin API的不同部分,请构建新的Atlas SDK客户端并使用其服务。示例:
package main import ( "context" "fmt" "log" "os" "go.mongodb.org/atlas-sdk/v20241113004/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 Go SDK 和服务帐号身份验证
Atlas SDK Go使用服务帐户提供 OAuth 身份验证(目前作为预览功能)。服务帐户实施 OAuth client_credentials 授予。有关该功能的更多信息,请参阅服务帐户公共文档。
OAuth 身份验证
使用 OAuth ClientID 和 ClientSecret 进行身份验证
使用服务帐户进行 Admin API身份验证
使用服务帐户进行身份验证
package main import ( "context" "log" "os" "go.mongodb.org/atlas-sdk/v20241113004/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 }
撤销
撤销会在 OAuth 令牌到期之前使其失效。这实际上会“注销”当前的 OAuth客户端,并允许您配置新客户端。
// Sounding code omitted for brevity revokeConfig := credentials.NewConfig(clientID, clientSecret) revokeConfig.RevokeToken(context.Background(), &auth.Token{ AccessToken: "yourTokenHere" });
OAuth 令牌缓存
服务帐户 OAuth 访问令牌的有效性在expires_in
字段中表示为秒数。客户端可以缓存这些访问令牌以缓解速率限制并遵守访问令牌限制。
有关如何在Atlas SDK for Go中缓存和重用 OAuth 令牌的示例,请参阅服务帐户 OAuth 令牌缓存服务帐户 OAuth 令牌缓存示例。