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