Golang Library to use SSO UI as JWT login
go get github.com/ristekoss/golang-uisso-jwt
see example folder
login handler
// set config
config := ssojwt.MakeSSOConfig(time.Hour*168, time.Hour*720, "super secret access", "super secret refresh", "http://localhost:8080/login", "http://localhost:8080/")
// create middleware
authMiddleware := ssojwt.LoginCreator(config, nil)
// use handler func
http.HandleFunc("/login", authMiddleware)
on the frontend
const loginHandler = async () => {
const data = await popUpLogin();
const e = document.getElementById("res");
e.innerHTML = JSON.stringify(data, null, 2);
localStorage.setItem("ssoui", JSON.stringify(data));
};
const popUpLogin = () => {
const SSOWindow = window.open(
new URL(
// change service to what your backend url use and url encode it
"https://sso.ui.ac.id/cas2/login?service=http%3A%2F%2Flocalhost%3A8080%2Flogin"
).toString(),
"SSO UI Login",
"left=50, top=50, width=480, height=480"
);
return new Promise(function (resolve, reject) {
window.addEventListener(
"message",
(e) => {
if (SSOWindow) {
SSOWindow.close();
}
const data = e.data;
resolve(data);
},
{ once: true }
);
});
};
authenticated middleware
// set config
config := ssojwt.MakeSSOConfig(time.Hour*168, time.Hour*720, "super secret access", "super secret refresh", "http://localhost:8080/login", "http://localhost:8080/")
// create middleware
middle := ssojwt.MakeAccessTokenMiddleware(config, "user")
// use handler func
auth := middle(handler)
http.Handle("/check", auth)
authenticated middleware
// set config
config := ssojwt.MakeSSOConfig(time.Hour*168, time.Hour*720, "super secret access", "super secret refresh", "http://localhost:8080/login", "http://localhost:8080/")
// create middleware
middle := ssojwt.MakeRefreshTokenMiddleware(config)
// use handler func
http.Handle("/refresh", middle)
- create fiber handler
- create better readme.md