From: | Jacob Champion <jchampion(at)timescale(dot)com> |
---|---|
To: | mahendrakar s <mahendrakarforpg(at)gmail(dot)com>, Andrey Chudnovsky <achudnovskij(at)gmail(dot)com> |
Cc: | "pgsql-hackers(at)postgresql(dot)org" <pgsql-hackers(at)postgresql(dot)org>, Thomas Munro <thomas(dot)munro(at)gmail(dot)com>, "hlinnaka(at)iki(dot)fi" <hlinnaka(at)iki(dot)fi>, "michael(at)paquier(dot)xyz" <michael(at)paquier(dot)xyz>, "smilingsamay(at)gmail(dot)com" <smilingsamay(at)gmail(dot)com>, Stephen Frost <sfrost(at)snowman(dot)net> |
Subject: | Re: [PoC] Federated Authn/z with OAUTHBEARER |
Date: | 2023-09-06 22:11:23 |
Message-ID: | CAAWbhmiSC_3HG6i479ZFQFEQ3ZKWjCuzac7e4imjwPUB7D0WTw@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
v12 implements a first draft of a client hook, so applications can
replace either the device prompt or the entire OAuth flow. (Andrey and
Mahendrakar: hopefully this is close to what you need.) It also cleans
up some of the JSON tech debt.
Since (IMO) we don't want to introduce new hooks every time we make
improvements to the internal flows, the new hook is designed to
retrieve multiple pieces of data from the application. Clients either
declare their ability to get that data, or delegate the job to the
next link in the chain, which by default is a no-op. That lets us add
new data types to the end, and older clients will ignore them until
they're taught otherwise. (I'm trying hard not to over-engineer this,
but it seems like the concept of "give me some piece of data to
continue authenticating" could pretty easily subsume things like the
PQsslKeyPassHook if we wanted.)
The PQAUTHDATA_OAUTH_BEARER_TOKEN case is the one that replaces the
flow entirely, as discussed upthread. Your application gets the
discovery URI and the requested scope for the connection. It can then
either delegate back to libpq (e.g. if the issuer isn't one it can
help with), immediately return a token (e.g. if one is already cached
for the current user), or install a nonblocking callback to implement
a custom async flow. When the connection is closed (or fails), the
hook provides a cleanup function to free any resources it may have
allocated.
Thanks,
--Jacob
Attachment | Content-Type | Size |
---|---|---|
since-v11.diff.txt | text/plain | 39.3 KB |
v12-0003-backend-add-OAUTHBEARER-SASL-mechanism.patch.gz | application/gzip | 12.4 KB |
v12-0001-common-jsonapi-support-FRONTEND-clients.patch.gz | application/gzip | 6.6 KB |
v12-0004-Add-pytest-suite-for-OAuth.patch.gz | application/gzip | 34.6 KB |
v12-0005-squash-Add-pytest-suite-for-OAuth.patch.gz | application/gzip | 7.9 KB |
v12-0002-libpq-add-OAUTHBEARER-SASL-mechanism.patch.gz | application/gzip | 33.7 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | David G. Johnston | 2023-09-06 22:13:33 | Re: Can a role have indirect ADMIN OPTION on another role? |
Previous Message | Tom Lane | 2023-09-06 22:01:53 | Re: Performance degradation on concurrent COPY into a single relation in PG16. |