44 lines
1.1 KiB
Markdown
44 lines
1.1 KiB
Markdown
# ginoidc
|
|
|
|
ginoidc is a package based on [XenitAB's gin oidc middleware](github.com/XenitAB/go-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)`.
|
|
|
|
```go
|
|
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)
|
|
}
|
|
```
|