SDK

Go SDK

github.com/mikusnuz/authon-go서버 측 토큰 검증 및 사용자 관리를 위한 Go SDK.

설치

bash
go get github.com/mikusnuz/authon-go

클라이언트 설정

main.go
package main

import (
    "github.com/mikusnuz/authon-go"
)

func main() {
    client := authon.NewClient("sk_live_your_secret_key")
    // or with options
    client := authon.NewClient("sk_live_your_key", authon.WithAPIURL("https://api.authon.dev"))
}

토큰 검증

go
// Verify a JWT access token
payload, err := client.VerifyToken(ctx, accessToken)
if err != nil {
    // handle invalid token
}
// payload.UserID, payload.Email, payload.ProjectID

// Verify token and fetch full user
user, err := client.VerifyTokenAndGetUser(ctx, accessToken)

HTTP 미들웨어

middleware/auth.go
package middleware

import (
    "net/http"
    "strings"
    authon "github.com/mikusnuz/authon-go"
)

func AuthMiddleware(client *authon.Client) func(http.Handler) http.Handler {
    return func(next http.Handler) http.Handler {
        return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
            authHeader := r.Header.Get("Authorization")
            token := strings.TrimPrefix(authHeader, "Bearer ")

            user, err := client.VerifyTokenAndGetUser(r.Context(), token)
            if err != nil {
                http.Error(w, "Unauthorized", http.StatusUnauthorized)
                return
            }

            ctx := authon.WithUser(r.Context(), user)
            next.ServeHTTP(w, r.WithContext(ctx))
        })
    }
}

사용자 관리

go
// List users
users, err := client.Users.List(ctx, authon.ListUsersParams{
    Limit:  20,
    Offset: 0,
    Search: "john",
})

// Get user
user, err := client.Users.Get(ctx, "usr_abc123")

// Ban user
err = client.Users.Ban(ctx, "usr_abc123")

// Delete user
err = client.Users.Delete(ctx, "usr_abc123")

웹훅 검증

go
event, err := client.Webhooks.Verify(payload, signature, webhookSecret)
if err != nil {
    http.Error(w, "Invalid signature", http.StatusBadRequest)
    return
}

switch event.Type {
case "user.created":
    log.Printf("New user: %s", event.Data.User.Email)
case "session.ended":
    log.Printf("Session ended: %s", event.Data.User.ID)
}
Authon — 범용 인증 플랫폼