37 lines
823 B
Go
37 lines
823 B
Go
package oauth
|
|
|
|
import (
|
|
"encoding/base64"
|
|
"encoding/json"
|
|
"net/http"
|
|
|
|
"gitea.local/admin/hspguard/internal/util"
|
|
"gitea.local/admin/hspguard/internal/web"
|
|
)
|
|
|
|
func (h *OAuthHandler) WriteJWKS(w http.ResponseWriter, r *http.Request) {
|
|
pubKey, err := util.ParseBase64PublicKey(h.cfg.Jwt.PublicKey)
|
|
if err != nil {
|
|
web.Error(w, "failed to parse public key", http.StatusInternalServerError)
|
|
}
|
|
|
|
n := base64.RawURLEncoding.EncodeToString(pubKey.N.Bytes())
|
|
e := base64.RawURLEncoding.EncodeToString([]byte{1, 0, 1}) // 65537 = 0x010001
|
|
|
|
jwks := map[string]interface{}{
|
|
"keys": []map[string]string{
|
|
{
|
|
"kty": "RSA",
|
|
"kid": "my-rsa-key-1",
|
|
"use": "sig",
|
|
"alg": "RS256",
|
|
"n": n,
|
|
"e": e,
|
|
},
|
|
},
|
|
}
|
|
|
|
w.Header().Set("Content-Type", "application/json")
|
|
json.NewEncoder(w).Encode(jwks)
|
|
}
|