Skip to content

Commit be5bcc1

Browse files
committed
use public field to block confidential grants
1 parent e0f39b9 commit be5bcc1

File tree

2 files changed

+12
-2
lines changed

2 files changed

+12
-2
lines changed

manage/manager.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -287,7 +287,7 @@ func (m *Manager) GenerateAccessToken(ctx context.Context, gt oauth2.GrantType,
287287
if !cliPass.VerifyPassword(tgr.ClientSecret) {
288288
return nil, errors.ErrInvalidClient
289289
}
290-
} else if cli.IsPublic() == false && len(cli.GetSecret()) > 0 && tgr.ClientSecret != cli.GetSecret() {
290+
} else if len(cli.GetSecret()) > 0 && tgr.ClientSecret != cli.GetSecret() {
291291
return nil, errors.ErrInvalidClient
292292
}
293293
if tgr.RedirectURI != "" {
@@ -296,6 +296,10 @@ func (m *Manager) GenerateAccessToken(ctx context.Context, gt oauth2.GrantType,
296296
}
297297
}
298298

299+
if gt == oauth2.ClientCredentials && cli.IsPublic() == true {
300+
return nil, errors.ErrInvalidClient
301+
}
302+
299303
if gt == oauth2.AuthorizationCode {
300304
ti, err := m.getAndDelAuthorizationCode(ctx, tgr)
301305
if err != nil {

server/server_test.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,15 @@ func init() {
3838

3939
func clientStore(domain string, public bool) oauth2.ClientStore {
4040
clientStore := store.NewClientStore()
41+
var secret string
42+
if public {
43+
secret = ""
44+
} else {
45+
secret = clientSecret
46+
}
4147
clientStore.Set(clientID, &models.Client{
4248
ID: clientID,
43-
Secret: clientSecret,
49+
Secret: secret,
4450
Domain: domain,
4551
Public: public,
4652
})

0 commit comments

Comments
 (0)