photoprism/docker/dummy/oidc/app/server.go
2021-11-09 17:40:53 +01:00

54 lines
1.1 KiB
Go

package main
import (
"context"
"crypto/rand"
"crypto/sha256"
"log"
"net/http"
"github.com/gorilla/mux"
"caos-test-op/mock"
"github.com/caos/oidc/pkg/op"
)
func main() {
ctx := context.Background()
b := make([]byte, 32)
rand.Read(b)
port := "9998"
config := &op.Config{
Issuer: "http://dummy-oidc:9998",
CryptoKey: sha256.Sum256(b),
CodeMethodS256: true,
}
storage := mock.NewAuthStorage()
handler, err := op.NewOpenIDProvider(ctx, config, storage)
if err != nil {
log.Fatal(err)
}
router := handler.HttpHandler().(*mux.Router)
router.Methods("GET").Path("/login").HandlerFunc(HandleLogin)
server := &http.Server{
Addr: ":" + port,
Handler: router,
}
err = server.ListenAndServe()
if err != nil {
log.Fatal(err)
}
<-ctx.Done()
}
func HandleLogin(w http.ResponseWriter, r *http.Request) {
r.ParseForm()
requestId := r.Form.Get("id")
// simulate user login and retrieve a token that indicates a successfully logged-in user
usertoken := requestId + ":usertoken"
http.Redirect(w, r, "/authorize/callback?id="+usertoken, http.StatusFound)
}