SDK

Go SDK

github.com/mikusnuz/authon-goGo SDK for server-side token verification and user management.

Installation

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

Client Setup

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"))
}

Token Verification

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

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))
        })
    }
}

User Management

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")

Webhook Verification

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 — Universal Authentication Platform