mirror of
https://github.com/xslasd/x-oidc.git
synced 2024-07-25 12:21:00 +08:00
52 lines
1.2 KiB
Go
52 lines
1.2 KiB
Go
package oidc
|
|
|
|
import (
|
|
"context"
|
|
"github.com/xslasd/x-oidc/constant"
|
|
"github.com/xslasd/x-oidc/ecode"
|
|
"github.com/xslasd/x-oidc/model"
|
|
)
|
|
|
|
// TODO
|
|
func (o *OpenIDProvider) subjectTokenExchange(ctx context.Context, req *TokenExchangeReq) (*model.AccessTokenRes, error) {
|
|
if req.SubjectToken == "" {
|
|
return nil, ecode.SubjectTokenInvalid
|
|
}
|
|
if req.SubjectTokenType == "" {
|
|
return nil, ecode.SubjectTokenTypeInvalid
|
|
}
|
|
client, err := o.cfg.Storage.GetClientByClientID(ctx, req.ClientID)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
if client.GetClientSecret() != req.ClientSecret {
|
|
return nil, ecode.ClientIDOrSecretInvalid
|
|
}
|
|
switch req.SubjectTokenType {
|
|
case constant.AccessTokenType:
|
|
//var tokenID, subject string
|
|
//parts := strings.Split(req.SubjectToken, ".")
|
|
//if len(parts) == 3 {
|
|
//
|
|
//} else {
|
|
// tokenIDSubject, err := o.Crypto.Decrypt(req.SubjectToken)
|
|
// if err != nil {
|
|
// return nil, err
|
|
// }
|
|
// splitToken := strings.Split(tokenIDSubject, ":")
|
|
// if len(splitToken) != 2 {
|
|
// return nil, ecode.SubjectTokenInvalid
|
|
// }
|
|
// tokenID = splitToken[0]
|
|
// subject = splitToken[1]
|
|
//}
|
|
|
|
case constant.RefreshTokenType:
|
|
case constant.IDTokenType:
|
|
case constant.JWTTokenType:
|
|
|
|
}
|
|
|
|
return nil, nil
|
|
}
|