jwt check the base file id

fix https://github.com/chrislusf/seaweedfs/issues/867
This commit is contained in:
Chris Lu 2019-03-03 10:17:44 -08:00
parent 2812c14520
commit 219b651bc3
2 changed files with 35 additions and 0 deletions

View file

@ -0,0 +1,31 @@
package weed_server
import (
"strings"
"testing"
)
func TestParseURL(t *testing.T) {
if vid, fid, _, _, _ := parseURLPath("/1,06dfa8a684"); true {
if vid != "1" {
t.Errorf("fail to parse vid: %s", vid)
}
if fid != "06dfa8a684" {
t.Errorf("fail to parse fid: %s", fid)
}
}
if vid, fid, _, _, _ := parseURLPath("/1,06dfa8a684_1"); true {
if vid != "1" {
t.Errorf("fail to parse vid: %s", vid)
}
if fid != "06dfa8a684_1" {
t.Errorf("fail to parse fid: %s", fid)
}
if sepIndex := strings.LastIndex(fid, "_"); sepIndex > 0 {
fid = fid[:sepIndex]
}
if fid != "06dfa8a684" {
t.Errorf("fail to parse fid: %s", fid)
}
}
}

View file

@ -2,6 +2,7 @@ package weed_server
import ( import (
"net/http" "net/http"
"strings"
"github.com/chrislusf/seaweedfs/weed/glog" "github.com/chrislusf/seaweedfs/weed/glog"
"github.com/chrislusf/seaweedfs/weed/security" "github.com/chrislusf/seaweedfs/weed/security"
@ -71,6 +72,9 @@ func (vs *VolumeServer) maybeCheckJwtAuthorization(r *http.Request, vid, fid str
} }
if sc, ok := token.Claims.(*security.SeaweedFileIdClaims); ok { if sc, ok := token.Claims.(*security.SeaweedFileIdClaims); ok {
if sepIndex := strings.LastIndex(fid, "_"); sepIndex > 0 {
fid = fid[:sepIndex]
}
return sc.Fid == vid+","+fid return sc.Fid == vid+","+fid
} }
glog.V(1).Infof("unexpected jwt from %s: %v", r.RemoteAddr, tokenStr) glog.V(1).Infof("unexpected jwt from %s: %v", r.RemoteAddr, tokenStr)