3737 ErrCodeNotFound = errors .New ("code_not_found" )
3838 ErrTokenNotFound = errors .New ("token_not_found" )
3939 ErrTokenExpired = errors .New ("token_expired" )
40+ ErrInvalidClient = errors .New ("invalid_client" )
4041)
4142
4243type ClaimSet struct {
@@ -212,7 +213,7 @@ func (service *OIDCService) Init() error {
212213}
213214
214215func (service * OIDCService ) GetIssuer () string {
215- return service .config . Issuer
216+ return service .issuer
216217}
217218
218219func (service * OIDCService ) GetClient (id string ) (config.OIDCClientConfig , bool ) {
@@ -424,7 +425,7 @@ func (service *OIDCService) GenerateAccessToken(c *gin.Context, client config.OI
424425 return tokenResponse , nil
425426}
426427
427- func (service * OIDCService ) RefreshAccessToken (c * gin.Context , refreshToken string ) (TokenResponse , error ) {
428+ func (service * OIDCService ) RefreshAccessToken (c * gin.Context , refreshToken string , reqClientId string ) (TokenResponse , error ) {
428429 entry , err := service .queries .GetOidcTokenByRefreshToken (c , service .Hash (refreshToken ))
429430
430431 if err != nil {
@@ -438,6 +439,11 @@ func (service *OIDCService) RefreshAccessToken(c *gin.Context, refreshToken stri
438439 return TokenResponse {}, ErrTokenExpired
439440 }
440441
442+ // Ensure the client ID in the request matches the client ID in the token
443+ if entry .ClientID != reqClientId {
444+ return TokenResponse {}, ErrInvalidClient
445+ }
446+
441447 idToken , err := service .generateIDToken (config.OIDCClientConfig {
442448 ClientID : entry .ClientID ,
443449 }, entry .Sub )
0 commit comments