func (s *FositeRehinkDBStore) GetOpenIDConnectSession(_ context.Context, authorizeCode string, requester fosite.Requester) (fosite.Requester, error) { cl, ok := s.IDSessions[authorizeCode] if !ok { return nil, fosite.ErrNotFound } return requestFromRDB(cl, requester.GetSession()) }
// RevokeToken implements https://tools.ietf.org/html/rfc7009#section-2.1 // The token type hint indicates which token type check should be performed first. func (r *TokenRevocationHandler) RevokeToken(ctx context.Context, token string, tokenType fosite.TokenType) error { discoveryFuncs := []func() (request fosite.Requester, err error){ func() (request fosite.Requester, err error) { // Refresh token signature := r.RefreshTokenStrategy.RefreshTokenSignature(token) return r.TokenRevocationStorage.GetRefreshTokenSession(ctx, signature, nil) }, func() (request fosite.Requester, err error) { // Access token signature := r.AccessTokenStrategy.AccessTokenSignature(token) return r.TokenRevocationStorage.GetAccessTokenSession(ctx, signature, nil) }, } // Token type hinting if tokenType == fosite.AccessToken { discoveryFuncs[0], discoveryFuncs[1] = discoveryFuncs[1], discoveryFuncs[0] } var ar fosite.Requester var err error if ar, err = discoveryFuncs[0](); err != nil { ar, err = discoveryFuncs[1]() } if err != nil { return err } requestID := ar.GetID() r.TokenRevocationStorage.RevokeRefreshToken(ctx, requestID) r.TokenRevocationStorage.RevokeAccessToken(ctx, requestID) return nil }
func (s *FositeRehinkDBStore) publishInsert(table r.Term, id string, requester fosite.Requester) error { sess, err := json.Marshal(requester.GetSession()) if err != nil { pkg.LogError(errors.New(err)) return errors.New(err) } if _, err := table.Insert(&RdbSchema{ ID: id, RequestedAt: requester.GetRequestedAt(), Client: requester.GetClient().(*fosite.DefaultClient), Scopes: requester.GetScopes(), GrantedScopes: requester.GetGrantedScopes(), Form: requester.GetRequestForm(), Session: sess, }).RunWrite(s.Session); err != nil { return errors.New(err) } return nil }
func getExpiresIn(r fosite.Requester, key fosite.TokenType, defaultLifespan time.Duration, now time.Time) time.Duration { if r.GetSession().GetExpiresAt(key).IsZero() { return defaultLifespan } return time.Duration(r.GetSession().GetExpiresAt(key).UnixNano() - now.UnixNano()) }