ginoidc/README.md
2022-10-18 12:14:31 +02:00

1.1 KiB

ginoidc

ginoidc is a package based on XenitAB's gin oidc middleware.

It features the handler being permissive and adds errors to the *gin.Context's context values under the "oidcerrors" key.

You can also extract keycloak claims from the *gin.Context via keycloakclaims.FromRequest(*gin.Context).

package main
import (
    "code.icod.de/dalu/ginoidc"
    "code.icod.de/dalu/ginoidc/keycloakclaims"
    "code.icod.de/dalu/oidc/options"
)
func main() {
    r := gin.Default()

    var cfg config.OIDCConfig

    oidcHandler := ginoidc.New(
       options.WithIssuer(cfg.Issuer),
       options.WithRequiredTokenType("JWT"),
       options.WithRequiredAudience(cfg.Audience),
       options.IsPermissive(),
    )
    v1 := r.Group("/api/v1")
    v1.Use(oidcHandler)

    entity := v1.Group("/entity")
    entity.GET("/", List)
    entity.GET("/:id", GetOne)
    entity.POST("/", CreateOne)
    entity.PUT("/:id", UpdateOne)
    entity.DELETE("/:id", DeleteOne)
}

// example handler
func List(cx *gin.Context) {
    claims := keycloakclaims.FromRequest(cx)
    cx.JSON(200, claims)
}