@@ -100,24 +100,37 @@ func NewServer(config Config, store storage.Storage) (*Server, error) {
100100
101101 // Configure fosite
102102 oauthConfig := & compose.Config {
103- AccessTokenLifespan : config .TokenTTL ,
104- RefreshTokenLifespan : config .TokenTTL * 2 ,
105- AuthorizeCodeLifespan : 10 * time .Minute ,
106- MinParameterEntropy : minEntropy ,
107- EnforcePKCE : true ,
108- ScopeStrategy : fosite .HierarchicScopeStrategy ,
109- AudienceMatchingStrategy : fosite .DefaultAudienceMatchingStrategy ,
110- HashCost : 12 ,
103+ AccessTokenLifespan : config .TokenTTL ,
104+ RefreshTokenLifespan : config .TokenTTL * 2 ,
105+ AuthorizeCodeLifespan : 10 * time .Minute ,
106+ TokenURL : config .Issuer + "/token" ,
107+ ScopeStrategy : fosite .HierarchicScopeStrategy ,
108+ AudienceMatchingStrategy : fosite .DefaultAudienceMatchingStrategy ,
109+ EnforcePKCEForPublicClients : true ,
110+ EnablePKCEPlainChallengeMethod : false ,
111+ MinParameterEntropy : minEntropy ,
111112 }
112113
113- // Create provider using compose
114- provider := compose .ComposeAllEnabled (
114+ // Create provider using compose with specific factories
115+ provider := compose .Compose (
115116 oauthConfig ,
116117 store ,
117- secret ,
118- nil , // RSA key not needed for our use case
118+ & compose.CommonStrategy {
119+ CoreStrategy : compose .NewOAuth2HMACStrategy (oauthConfig , secret , nil ),
120+ },
121+ nil , // hasher
122+ compose .OAuth2AuthorizeExplicitFactory ,
123+ compose .OAuth2ClientCredentialsGrantFactory ,
124+ compose .OAuth2PKCEFactory ,
125+ compose .OAuth2RefreshTokenGrantFactory ,
126+ compose .OAuth2TokenIntrospectionFactory ,
119127 )
120128
129+ // Set default session duration if not configured
130+ if config .SessionDuration == 0 {
131+ config .SessionDuration = 24 * time .Hour
132+ }
133+
121134 return & Server {
122135 provider : provider ,
123136 storage : store ,
0 commit comments