Skip to content

Instantly share code, notes, and snippets.

@iporsut
Last active March 12, 2019 09:18
Show Gist options
  • Save iporsut/636ffbaf1c7d450895558a063b286bf0 to your computer and use it in GitHub Desktop.
Save iporsut/636ffbaf1c7d450895558a063b286bf0 to your computer and use it in GitHub Desktop.
JWT public/private key
module gingwt
go 1.12
require (
github.com/appleboy/gin-jwt ca1084e5d5a2912d883a425834a3b642c62dc9cd
github.com/gin-contrib/sse v0.0.0-20190301062529-5545eab6dad3 // indirect
github.com/gin-gonic/gin v1.3.0
github.com/golang/protobuf v1.3.0 // indirect
github.com/mattn/go-isatty v0.0.6 // indirect
github.com/ugorji/go/codec v0.0.0-20190309163734-c4a1c341dc93 // indirect
gopkg.in/dgrijalva/jwt-go.v3 v3.2.0 // indirect
gopkg.in/go-playground/validator.v8 v8.18.2 // indirect
gopkg.in/yaml.v2 v2.2.2 // indirect
)
package main
import (
"log"
"net/http"
"strconv"
"time"
jwt "github.com/appleboy/gin-jwt"
"github.com/gin-gonic/gin"
)
func main() {
authMiddleware, err := jwt.New(&jwt.GinJWTMiddleware{
SigningAlgorithm: "RS256",
PrivKeyFile: "private-key.pem",
PubKeyFile: "public-key.pem",
Timeout: time.Hour,
Authenticator: func(c *gin.Context) (interface{}, error) {
var login struct {
Username string `json:"username"`
Password string `json:"password"`
}
if err := c.ShouldBind(&login); err != nil {
return "", jwt.ErrMissingLoginValues
}
if login.Username == "admin" && login.Password == "admin" {
return "", nil
}
return nil, jwt.ErrFailedAuthentication
},
})
if err != nil {
log.Fatal(err)
}
r := gin.Default()
r.POST("/login", authMiddleware.LoginHandler)
r.GET("/add/:a/:b", authMiddleware.MiddlewareFunc(), func(c *gin.Context) {
a, _ := strconv.Atoi(c.Param("a"))
b, _ := strconv.Atoi(c.Param("b"))
c.JSON(http.StatusOK, gin.H{
"result": a + b,
})
})
r.Run(":8000")
}
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAzJJ1rHqRWzLqIW002jyW5cY0ByQBXOaXDbELM/QnRBdUcHbU
erE53kXkcTaNBsjlMoyGgBczW+Jwf65G0YFL0yWhopxtzvJlNWp/C8/3pB1BOdKQ
Luc8EW96l/rRCpnLFHSezc+VtGdcCAdKcX9DY2pkBbmxq9qsgVQMxqwra5raRcsi
i7XYkPSu3r7J+9u94DzNPFyFyp+e8CBCRpJMzpx4TBPENRdI/aAgK+feRBUZ3gYN
h/cHA1MKTqxoXQ86bA2d6xloKWe0ZGZxzqBQ2AlLchJsrAVyGItpAy2gXL3xAT42
Ug/fvWMqyHrRl4ohfUW6MRC77bv4a9Xbr8vR2QIDAQABAoIBAA+hFOpzhs1v62FY
ZZRS0riFVw5AmvYNC/dY0mFKwwE5wxLAkWU6SxCHSHe50jZ1fMVK5S++FgdsGmo2
12REO5XLJzk0OFN6Q288Tq6JWgMo1QXk520d74HpgXVBDV2A+Hn8mvFgbbCVwPtA
C1j2fyCGTVP+putZTpqm4D8BgmO7EtX9rCoMaVxfM1rjkVRXQ1BXjqyq7tkS0AEU
e/bqLNWh4Yup8EZJLOllAfeRset15XwWq5Y+HE02GSNSvonUGDibV5P/Dx4OCyFt
PU+8tk9xzMyJXA4odueyQQzjvfR5gME5IlRwDN45j62VjhAzV5H7rzoBTz5VGGBI
sm+tQ50CgYEA/C5UFNIkhz8FUHghbqIj3WB1NRSWxisSZyBrgzCoCnWiSt3zR67p
ZQPABBvhq0ZYgAhhMaT969yzuppUyADZHjnBG9+Rl7olcvHmdIqX3SDsJL6II/Z+
L/HXjtIlq5DAstP+/dgnRSxfYv6ZvexYXJ+BkGNL/g0a75QC+k/h49sCgYEAz6uO
3xwqOMob93mJQJBYIY3//PgW9xjlkF8Lj2ncXXSZ5L+z/rybpzTUo2vRJ22dd20G
/a/cMNAXs285Ae9gspSXCzSN127xnd0IXLlE7zvJVtjbFnl6HXvf1fDF9Rev37SW
7b+TxB6rb3t8x+iuYXS8R18zk05IPUgMAU+RaVsCgYEA8KAsLqnNnRdvNLdL/0rL
OgM+E2YP8AtNRgXTUJzu2vwf3Zwm9LFblr2bTNBl5o37CD/2re4nNBWlkVqNp0HX
6lVlg/kx7Tr7XNCg+3b7LU6qxOzg7p/XDFyROIAg3bIDjR9n4kOMRR7v7X/Op0CL
l+XDNUjqTAGpQA1VQg9TFZ0CgYAIguGCJ2dbmHz48ZQ8fy39ghJhzdEzI2QVPK/+
mrobYnIEPA8me5hti+7DG+IgmY+Am4lT0GdX4M933TEa8TKnXwupu+esUrG4ZJy5
ICbBH1QrKQwhqazllHQiEpIqb2QX6RDegaGOwisIkKkWkGTFPcGRs0cr3GN9j3xe
eWJeTQKBgD7V9123Dr+fRXFuV6WRxfvoTpQ46/vqM94b0C3V3TZWLvbk8k9QzZgz
bqWkyHYPCYsiP1CQAgdHGIpAbQgJdDzNwBdNd2OC8e3kAJCU5GPbl9vstLTZnBMu
zl2VzUn5CmXDImz85J4WLjX0GpqzkvqUa9/3tY16M0MVQ2613rQC
-----END RSA PRIVATE KEY-----
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzJJ1rHqRWzLqIW002jyW
5cY0ByQBXOaXDbELM/QnRBdUcHbUerE53kXkcTaNBsjlMoyGgBczW+Jwf65G0YFL
0yWhopxtzvJlNWp/C8/3pB1BOdKQLuc8EW96l/rRCpnLFHSezc+VtGdcCAdKcX9D
Y2pkBbmxq9qsgVQMxqwra5raRcsii7XYkPSu3r7J+9u94DzNPFyFyp+e8CBCRpJM
zpx4TBPENRdI/aAgK+feRBUZ3gYNh/cHA1MKTqxoXQ86bA2d6xloKWe0ZGZxzqBQ
2AlLchJsrAVyGItpAy2gXL3xAT42Ug/fvWMqyHrRl4ohfUW6MRC77bv4a9Xbr8vR
2QIDAQAB
-----END PUBLIC KEY-----
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment