@@ -926,7 +926,7 @@ func (a *Authenticator) Callback(w http.ResponseWriter, r *http.Request) {
926
926
// Now we have done code exchange, we have access to the id_token and that
927
927
// allows us to see if the user actually exists. If it doesn't then we
928
928
// either deny entry or let them signup.
929
- user , err := a .rbac .GetUser (r .Context (), idToken .Email .Email )
929
+ user , err := a .rbac .GetUserByEmail (r .Context (), idToken .Email .Email )
930
930
if err != nil {
931
931
if ! goerrors .Is (err , rbac .ErrResourceReference ) {
932
932
redirector .raise (ErrorServerError , "user lookup failure" )
@@ -1275,7 +1275,7 @@ func (a *Authenticator) Onboard(w http.ResponseWriter, r *http.Request) {
1275
1275
return
1276
1276
}
1277
1277
1278
- shadowUser , err := a .rbac .GetUser (r .Context (), state .IDToken .Email .Email )
1278
+ shadowUser , err := a .rbac .GetUserByEmail (r .Context (), state .IDToken .Email .Email )
1279
1279
if err != nil {
1280
1280
redirector .raise (ErrorServerError , "failed to read shadow user" )
1281
1281
return
@@ -1399,7 +1399,7 @@ func oidcHash(value string) string {
1399
1399
}
1400
1400
1401
1401
// oidcIDToken builds an OIDC ID token.
1402
- func (a * Authenticator ) oidcIDToken (r * http.Request , idToken * oidc.IDToken , query url.Values , expiry time.Duration , atHash string , lastAuthenticationTime time.Time ) (* string , error ) {
1402
+ func (a * Authenticator ) oidcIDToken (r * http.Request , userID string , idToken * oidc.IDToken , query url.Values , expiry time.Duration , atHash string , lastAuthenticationTime time.Time ) (* string , error ) {
1403
1403
scope := strings .Split (query .Get ("scope" ), " " )
1404
1404
1405
1405
//nolint:nilnil
@@ -1409,9 +1409,8 @@ func (a *Authenticator) oidcIDToken(r *http.Request, idToken *oidc.IDToken, quer
1409
1409
1410
1410
claims := & oidc.IDToken {
1411
1411
Claims : jwt.Claims {
1412
- Issuer : "https://" + r .Host ,
1413
- // TODO: we should use the user ID.
1414
- Subject : idToken .Email .Email ,
1412
+ Issuer : "https://" + r .Host ,
1413
+ Subject : userID ,
1415
1414
Audience : []string {
1416
1415
query .Get ("client_id" ),
1417
1416
},
@@ -1480,8 +1479,8 @@ func (a *Authenticator) validateClientSecret(r *http.Request, query url.Values)
1480
1479
}
1481
1480
1482
1481
// revokeSession revokes all tokens for a clientID.
1483
- func (a * Authenticator ) revokeSession (ctx context.Context , clientID , codeID , subject string ) error {
1484
- user , err := a .rbac .GetActiveUser (ctx , subject )
1482
+ func (a * Authenticator ) revokeSession (ctx context.Context , clientID , codeID , userID string ) error {
1483
+ user , err := a .rbac .GetActiveUserByID (ctx , userID )
1485
1484
if err != nil {
1486
1485
return errors .OAuth2ServerError ("failed to lookup user" ).WithError (err )
1487
1486
}
@@ -1542,7 +1541,7 @@ func (a *Authenticator) TokenAuthorizationCode(w http.ResponseWriter, r *http.Re
1542
1541
// authentication code, we just clear out anything associated with the client
1543
1542
// session.
1544
1543
if _ , ok := a .codeCache .Get (codeRaw ); ! ok {
1545
- _ = a .revokeSession (r .Context (), clientID , code .ID , code .IDToken . Email . Email )
1544
+ _ = a .revokeSession (r .Context (), clientID , code .ID , code .UserID )
1546
1545
1547
1546
return nil , errors .OAuth2InvalidGrant ("code is not present in cache" )
1548
1547
}
@@ -1552,12 +1551,10 @@ func (a *Authenticator) TokenAuthorizationCode(w http.ResponseWriter, r *http.Re
1552
1551
info := & IssueInfo {
1553
1552
Issuer : "https://" + r .Host ,
1554
1553
Audience : r .Host ,
1555
- // TODO: we should probably use the user ID here.
1556
- Subject : code .IDToken .Email .Email ,
1557
- Type : TokenTypeFederated ,
1554
+ Subject : code .UserID ,
1555
+ Type : TokenTypeFederated ,
1558
1556
Federated : & FederatedClaims {
1559
1557
ClientID : clientID ,
1560
- UserID : code .UserID ,
1561
1558
Provider : code .OAuth2Provider ,
1562
1559
Scope : NewScope (clientQuery .Get ("scope" )),
1563
1560
},
@@ -1571,7 +1568,7 @@ func (a *Authenticator) TokenAuthorizationCode(w http.ResponseWriter, r *http.Re
1571
1568
}
1572
1569
1573
1570
// Handle OIDC.
1574
- idToken , err := a .oidcIDToken (r , code .IDToken , clientQuery , a .options .AccessTokenDuration , oidcHash (tokens .AccessToken ), tokens .LastAuthenticationTime )
1571
+ idToken , err := a .oidcIDToken (r , code .UserID , code . IDToken , clientQuery , a .options .AccessTokenDuration , oidcHash (tokens .AccessToken ), tokens .LastAuthenticationTime )
1575
1572
if err != nil {
1576
1573
return nil , err
1577
1574
}
@@ -1625,7 +1622,7 @@ func (a *Authenticator) validateRefreshToken(ctx context.Context, r *http.Reques
1625
1622
return err
1626
1623
}
1627
1624
1628
- user , err := a .rbac .GetActiveUser (ctx , claims .Claims .Subject )
1625
+ user , err := a .rbac .GetActiveUserByID (ctx , claims .Claims .Subject )
1629
1626
if err != nil {
1630
1627
return errors .OAuth2ServerError ("failed to lookup user" ).WithError (err )
1631
1628
}
0 commit comments