Dovecot ACLs and XOAUTH2
Aki Tuomi
aki.tuomi at open-xchange.com
Mon Aug 22 12:04:28 UTC 2022
> On 22/08/2022 14:32 EEST Felix Auringer <felix.auringer at giz.berlin> wrote:
>
>
> On 8/22/22 10:14, Aki Tuomi wrote:
> > Hi!
> >
> > You need to export them in passdb. You can do `userdb_some_field=%{oauth2:some_field}`.
>
> That is exactly what I have been looking for, thank you! Is it also
> possible to extract arrays and objects from the token with this syntax?
> For example, I tried to save `allowed-origins` which is a list of
> strings but the field in the userdb was empty (but present). However,
> the field was processed according to the logs.
>
Currently the support is very limited. You can extract strings and numbers from a flat object.
> Furthermore, it seems that only keys that have a string or an array
> value are processed, so it may not even be possible to extract a parent
> object. For a structure like this:
>
> ```
> {
> "azp": "roundcube-test",
> "realm_access": {
> "roles": [...]
> },
> "resource_access": {
> "realm-management": {
> "roles": [...]
> },
> "account": {
> "roles": [...]
> }
> }
> }
> ```
>
> the log only shows:
>
> auth: Debug: oauth2(...): Processing field azp
> auth: Debug: oauth2(...): Processing field roles
>
> auth: Debug: oauth2(...): Processing field roles
>
> auth: Debug: oauth2(...): Processing field roles
>
> It also doesn't work to extract the whole token with
> `userdb_token=%{oauth2:access_token}` (this syntax however works for
> proxy authentication). Otherwise, I could just save the whole token in
> the user database.
>
You should be able to extract the whole access token like that, although I didn't say in my previous mail that the %{oauth2:} is valid only within the oauth2 passdb currently.
Additionally, the user's token is available as %w / %{password} on all passdbs. The best way I can think of right now is to use Lua passdb to complex token handling.
> Is there some syntax I did not find in the documentation that would
> enable me to extract either the whole token or a whole JSON object / array?
>
> Best regards,
> Felix
> ---
Aki
More information about the dovecot
mailing list