mirror of
https://github.com/casdoor/casdoor.git
synced 2025-05-23 02:35:49 +08:00
Fix CAS "/proxyValidate" API
This commit is contained in:
parent
3078409343
commit
0b859197da
@ -35,6 +35,11 @@ const (
|
|||||||
UnauthorizedService string = "UNAUTHORIZED_SERVICE"
|
UnauthorizedService string = "UNAUTHORIZED_SERVICE"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func queryUnescape(service string) string {
|
||||||
|
s, _ := url.QueryUnescape(service)
|
||||||
|
return s
|
||||||
|
}
|
||||||
|
|
||||||
func (c *RootController) CasValidate() {
|
func (c *RootController) CasValidate() {
|
||||||
ticket := c.Input().Get("ticket")
|
ticket := c.Input().Get("ticket")
|
||||||
service := c.Input().Get("service")
|
service := c.Input().Get("service")
|
||||||
@ -60,24 +65,25 @@ func (c *RootController) CasServiceValidate() {
|
|||||||
if !strings.HasPrefix(ticket, "ST") {
|
if !strings.HasPrefix(ticket, "ST") {
|
||||||
c.sendCasAuthenticationResponseErr(InvalidTicket, fmt.Sprintf("Ticket %s not recognized", ticket), format)
|
c.sendCasAuthenticationResponseErr(InvalidTicket, fmt.Sprintf("Ticket %s not recognized", ticket), format)
|
||||||
}
|
}
|
||||||
c.CasP3ServiceAndProxyValidate()
|
c.CasP3ProxyValidate()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *RootController) CasProxyValidate() {
|
func (c *RootController) CasProxyValidate() {
|
||||||
|
// https://apereo.github.io/cas/6.6.x/protocol/CAS-Protocol-Specification.html#26-proxyvalidate-cas-20
|
||||||
|
// "/proxyValidate" should accept both service tickets and proxy tickets.
|
||||||
|
c.CasP3ProxyValidate()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *RootController) CasP3ServiceValidate() {
|
||||||
ticket := c.Input().Get("ticket")
|
ticket := c.Input().Get("ticket")
|
||||||
format := c.Input().Get("format")
|
format := c.Input().Get("format")
|
||||||
if !strings.HasPrefix(ticket, "PT") {
|
if !strings.HasPrefix(ticket, "ST") {
|
||||||
c.sendCasAuthenticationResponseErr(InvalidTicket, fmt.Sprintf("Ticket %s not recognized", ticket), format)
|
c.sendCasAuthenticationResponseErr(InvalidTicket, fmt.Sprintf("Ticket %s not recognized", ticket), format)
|
||||||
}
|
}
|
||||||
c.CasP3ServiceAndProxyValidate()
|
c.CasP3ProxyValidate()
|
||||||
}
|
}
|
||||||
|
|
||||||
func queryUnescape(service string) string {
|
func (c *RootController) CasP3ProxyValidate() {
|
||||||
s, _ := url.QueryUnescape(service)
|
|
||||||
return s
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *RootController) CasP3ServiceAndProxyValidate() {
|
|
||||||
ticket := c.Input().Get("ticket")
|
ticket := c.Input().Get("ticket")
|
||||||
format := c.Input().Get("format")
|
format := c.Input().Get("format")
|
||||||
service := c.Input().Get("service")
|
service := c.Input().Get("service")
|
||||||
@ -263,7 +269,6 @@ func (c *RootController) sendCasAuthenticationResponseErr(code, msg, format stri
|
|||||||
Message: msg,
|
Message: msg,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
if format == "json" {
|
if format == "json" {
|
||||||
c.Data["json"] = serviceResponse
|
c.Data["json"] = serviceResponse
|
||||||
c.ServeJSON()
|
c.ServeJSON()
|
||||||
|
@ -273,7 +273,7 @@ func initAPI() {
|
|||||||
beego.Router("/cas/:organization/:application/proxy", &controllers.RootController{}, "GET:CasProxy")
|
beego.Router("/cas/:organization/:application/proxy", &controllers.RootController{}, "GET:CasProxy")
|
||||||
beego.Router("/cas/:organization/:application/validate", &controllers.RootController{}, "GET:CasValidate")
|
beego.Router("/cas/:organization/:application/validate", &controllers.RootController{}, "GET:CasValidate")
|
||||||
|
|
||||||
beego.Router("/cas/:organization/:application/p3/serviceValidate", &controllers.RootController{}, "GET:CasP3ServiceAndProxyValidate")
|
beego.Router("/cas/:organization/:application/p3/serviceValidate", &controllers.RootController{}, "GET:CasP3ServiceValidate")
|
||||||
beego.Router("/cas/:organization/:application/p3/proxyValidate", &controllers.RootController{}, "GET:CasP3ServiceAndProxyValidate")
|
beego.Router("/cas/:organization/:application/p3/proxyValidate", &controllers.RootController{}, "GET:CasP3ProxyValidate")
|
||||||
beego.Router("/cas/:organization/:application/samlValidate", &controllers.RootController{}, "POST:SamlValidate")
|
beego.Router("/cas/:organization/:application/samlValidate", &controllers.RootController{}, "POST:SamlValidate")
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user