Documentation/proposals: added a caveats section to upstream refreshing proposal
This commit is contained in:
		| @@ -2,12 +2,12 @@ | ||||
|  | ||||
| ## TL;DR | ||||
|  | ||||
| Today, if a user deletes their Google account, dex will keep allowing clients to | ||||
| Today, if a user deletes their GitHub account, dex will keep allowing clients to | ||||
| refresh tokens on that user's behalf because dex never checks back in with | ||||
| Google. | ||||
| GitHub. | ||||
|  | ||||
| This is a proposal to change the connector package so the dex can check back | ||||
| in with Google. | ||||
| in with GitHub. | ||||
|  | ||||
| ## The problem | ||||
|  | ||||
| @@ -148,3 +148,18 @@ func (db passwordDB) Refresh(s connector.Scopes, identity connector.Identity) (c | ||||
| 	return identity, nil | ||||
| } | ||||
| ``` | ||||
|  | ||||
| ## Caveats | ||||
|  | ||||
| Certain providers, such as Google, will only grant a single refresh token for each | ||||
| client + end user pair. The second time one's requested, no refresh token is | ||||
| returned. This means refresh tokens must be stored by dex as objects on an | ||||
| upstream identity rather than part of a downstream refresh even. | ||||
|  | ||||
| Right now `ConnectorData` is too general for this since it is only stored with a | ||||
| refresh token and can't be shared between sessions. This should be rethought in | ||||
| combination with the [`user-object.md`](./user-object.md) proposal to see if | ||||
| there are reasonable ways for us to do this. | ||||
|  | ||||
| This isn't a problem for providers like GitHub because they return the same | ||||
| refresh token every time. We don't need to track a token per client. | ||||
|   | ||||
		Reference in New Issue
	
	Block a user