cubefs/sdk/auth/api.go
leonrayang 2970e2c3d1 update. go import path change from chubaofs to cubefs
Signed-off-by: leonrayang <chl696@sina.com>
2022-01-25 18:17:02 +08:00

46 lines
1.2 KiB
Go

package auth
import (
"encoding/json"
"github.com/cubefs/cubefs/proto"
"github.com/cubefs/cubefs/util/auth"
"github.com/cubefs/cubefs/util/cryptoutil"
)
func (api *API) GetTicket(clientId string, clientKey string, serviceID string) (ticket *auth.Ticket, err error) {
var (
key []byte
ts int64
msgResp proto.AuthGetTicketResp
respData []byte
)
message := proto.AuthGetTicketReq{
Type: proto.MsgAuthTicketReq,
ClientID: clientId,
ServiceID: serviceID,
}
if key, err = cryptoutil.Base64Decode(clientKey); err != nil {
return
}
if message.Verifier, ts, err = cryptoutil.GenVerifier(key); err != nil {
return
}
if respData, err = api.ac.request(clientId, clientKey, key, message, proto.ClientGetTicket, serviceID); err != nil {
return
}
if err = json.Unmarshal(respData, &msgResp); err != nil {
return
}
if err = proto.VerifyTicketRespComm(&msgResp, proto.MsgAuthTicketReq, clientId, serviceID, ts); err != nil {
return
}
ticket = &auth.Ticket{
ID: clientId,
SessionKey: cryptoutil.Base64Encode(msgResp.SessionKey.Key),
ServiceID: cryptoutil.Base64Encode(msgResp.SessionKey.Key),
Ticket: msgResp.Ticket,
}
return
}