Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit5d0489b

Browse files
committed
refactor validate to check expiary
1 parent3b6a39f commit5d0489b

File tree

5 files changed

+22
-6
lines changed

5 files changed

+22
-6
lines changed

‎coderd/database/modelmethods.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"time"
77

88
"golang.org/x/exp/maps"
9+
"golang.org/x/oauth2"
910

1011
"github.com/coder/coder/v2/coderd/database/dbtime"
1112
"github.com/coder/coder/v2/coderd/rbac"
@@ -268,6 +269,14 @@ func (u ExternalAuthLink) RBACObject() rbac.Object {
268269
returnrbac.ResourceUserData.WithID(u.UserID).WithOwner(u.UserID.String())
269270
}
270271

272+
func (uExternalAuthLink)OAuthToken()*oauth2.Token {
273+
return&oauth2.Token{
274+
AccessToken:u.OAuthAccessToken,
275+
RefreshToken:u.OAuthRefreshToken,
276+
Expiry:u.OAuthExpiry,
277+
}
278+
}
279+
271280
func (uUserLink)RBACObject() rbac.Object {
272281
// I assume UserData is ok?
273282
returnrbac.ResourceUserData.WithOwner(u.UserID.String()).WithID(u.UserID)

‎coderd/externalauth.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ func (api *API) externalAuthByID(w http.ResponseWriter, r *http.Request) {
5757
}
5858
vareg errgroup.Group
5959
eg.Go(func() (errerror) {
60-
res.Authenticated,res.User,err=config.ValidateToken(ctx,link.OAuthAccessToken)
60+
res.Authenticated,res.User,err=config.ValidateToken(ctx,link.OAuthToken())
6161
returnerr
6262
})
6363
eg.Go(func() (errerror) {

‎coderd/externalauth/externalauth.go

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ func (c *Config) RefreshToken(ctx context.Context, db database.Store, externalAu
138138
retryCtx,retryCtxCancel:=context.WithTimeout(ctx,time.Second)
139139
deferretryCtxCancel()
140140
validate:
141-
valid,_,err:=c.ValidateToken(ctx,token.AccessToken)
141+
valid,_,err:=c.ValidateToken(ctx,token)
142142
iferr!=nil {
143143
returnexternalAuthLink,false,xerrors.Errorf("validate external auth token: %w",err)
144144
}
@@ -179,7 +179,14 @@ validate:
179179

180180
// ValidateToken ensures the Git token provided is valid!
181181
// The user is optionally returned if the provider supports it.
182-
func (c*Config)ValidateToken(ctx context.Context,tokenstring) (bool,*codersdk.ExternalAuthUser,error) {
182+
func (c*Config)ValidateToken(ctx context.Context,link*oauth2.Token) (bool,*codersdk.ExternalAuthUser,error) {
183+
iflink==nil {
184+
returnfalse,nil,xerrors.New("validate external auth token: token is nil")
185+
}
186+
if!link.Expiry.IsZero()&&link.Expiry.Before(dbtime.Now()) {
187+
returnfalse,nil,nil
188+
}
189+
183190
ifc.ValidateURL=="" {
184191
// Default that the token is valid if no validation URL is provided.
185192
returntrue,nil,nil
@@ -189,7 +196,7 @@ func (c *Config) ValidateToken(ctx context.Context, token string) (bool, *coders
189196
returnfalse,nil,err
190197
}
191198

192-
req.Header.Set("Authorization",fmt.Sprintf("Bearer %s",token))
199+
req.Header.Set("Authorization",fmt.Sprintf("Bearer %s",link.AccessToken))
193200
res,err:=c.InstrumentedOAuth2Config.Do(ctx,promoauth.SourceValidateToken,req)
194201
iferr!=nil {
195202
returnfalse,nil,err

‎coderd/promoauth/oauth2_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ func TestInstrument(t *testing.T) {
7575
require.Equal(t,count("TokenSource"),1)
7676

7777
// Try a validate
78-
valid,_,err:=cfg.ValidateToken(ctx,refreshed.AccessToken)
78+
valid,_,err:=cfg.ValidateToken(ctx,refreshed)
7979
require.NoError(t,err)
8080
require.True(t,valid)
8181
require.Equal(t,count("ValidateToken"),1)

‎coderd/workspaceagents.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2143,7 +2143,7 @@ func (api *API) workspaceAgentsExternalAuthListen(rw http.ResponseWriter, ctx co
21432143
continue
21442144
}
21452145

2146-
valid,_,err:=externalAuthConfig.ValidateToken(ctx,externalAuthLink.OAuthAccessToken)
2146+
valid,_,err:=externalAuthConfig.ValidateToken(ctx,externalAuthLink.OAuthToken())
21472147
iferr!=nil {
21482148
api.Logger.Warn(ctx,"failed to validate external auth token",
21492149
slog.F("workspace_owner_id",workspace.OwnerID.String()),

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp