Docs Menu

Atlas Go SDK による認証

atlas-sdk-go ライブラリは、デフォルトの認証方法としてダイジェスト認証を利用します。 Atlas UIまたは Atlas CLI を使用してAPIキーを作成できます。

API認証 の詳細については、 Atlas 管理API認証 を参照してください。

Atlas Admin APIのさまざまな部分にアクセスするには、新しい Atlas SDKクライアントを構築し、そのサービスを使用します。 (例: )。

package main
import (
"context"
"fmt"
"log"
"os"
"go.mongodb.org/atlas-sdk/v20241113005/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/v20241113005/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フィールドに秒数として表されます。 クライアントはこれらのアクセス トークンをキャッシュ、レート制限を軽減し、アクセス トークンの制限に準拠できます。

Go用の Atlas SDK で OAuth トークンをキャッシュて再利用する方法の例については、「 サービス アカウント OAuth トークン キャッシュ サービス アカウント OAuth トークン キャッシュの例 」を参照してください。