Docs 菜单
Docs 主页
/
MongoDB Atlas
/ / /

使用Atlas Go SDK 进行身份验证

atlas-sdk-go库利用摘要式身份验证作为其默认身份验证方法。您可以通过Atlas用户界面或Atlas CLI 创建API密钥。

要学习;了解有关API身份验证的更多信息,请参阅Atlas Administration API身份验证。

要访问权限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 SDK Go使用服务帐户提供 OAuth 身份验证(目前作为预览功能)。服务帐户实施 OAuth client_credentials 授予。有关该功能的更多信息,请参阅服务帐户公共文档。

使用服务帐户进行身份验证

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 访问令牌的有效性在expires_in 字段中表示为秒数。客户端可以缓存这些访问令牌以缓解速率限制并遵守访问令牌限制。

有关如何在Atlas SDK for Go中缓存和重用 OAuth 令牌的示例,请参阅服务帐户 OAuth 令牌缓存服务帐户 OAuth 令牌缓存示例。

后退

Atlas Go SDK