-
Notifications
You must be signed in to change notification settings - Fork 43
Add id
column on tokens and sessions
#8137
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
48c4c68
to
7f377d8
Compare
@@ -957,7 +957,7 @@ authz_resource! { | |||
authz_resource! { | |||
name = "DeviceAccessToken", | |||
parent = "Fleet", | |||
primary_key = String, // token | |||
primary_key = { uuid_kind = AccessTokenKind }, | |||
roles_allowed = false, | |||
polar_snippet = FleetChild, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm realizing FleetChild
will probably have to change.
lookup_type: LookupType::ByOther("session token".to_string()), | ||
}) | ||
} | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I am struggling with one last thing — after changing the primary key from token to ID, I don't know how to authz check the new explicit lookup by token operation. I understand this is analogous to the authz check on a password login and should probably use the external authenticator opctx.
After the lookup by token, we have the whole session record on hand and can use a normal authz session for any further operations like expiration.
Closes #8139
WIP. Everything compiles and existing tests work, but we are not yet testing retrieval by ID and we need to think about authz checks on the datastore functions for retrieving tokens and sessions by token string.
This PR would be a lot shorter if not for the fact that the
token
column was the primary key on both tables, so adding theid
requires a bunch of migration steps to change the primary key. There were also a lot of changes to code and tests around making things ID-centric instead of token-centric.id
col and changing primary key to thatTypedUuid
to session and token DB modelsauthz_resource!
andlookup_resource!
calls for new primary keySession
trait methods to useid
instead oftoken
FakeSession
implementations (one for unit tests, one for integration tests) to a) track sessions in aVec
instead of aHashMap
with token keys