From: Aki Tuomi Date: Tue, 26 May 2020 06:53:26 +0000 (+0300) Subject: auth: db-oauth2 - Use common code for lookup and password grant X-Git-Tag: 2.3.11.2~36 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=48df491c4017db94a11ea82a61903425b2b43404;p=thirdparty%2Fdovecot%2Fcore.git auth: db-oauth2 - Use common code for lookup and password grant --- diff --git a/src/auth/db-oauth2.c b/src/auth/db-oauth2.c index d484c0a5dd..2c449315cc 100644 --- a/src/auth/db-oauth2.c +++ b/src/auth/db-oauth2.c @@ -711,26 +711,15 @@ db_oauth2_lookup_passwd_grant(struct oauth2_request_result *result, error = "Internal error"; } else error = result->error; + db_oauth2_callback(req, passdb_result, error); } else { - db_oauth2_fields_merge(req, result->fields); - if (*req->db->set.introspection_url != '\0' && - (req->db->set.force_introspection || - !db_oauth2_have_all_fields(req))) { - auth_request_log_debug(req->auth_request, AUTH_SUBSYS_DB, - "oauth2: Introspection needed after token validation"); - req->token = auth_fields_find(req->fields, "access_token"); - if (req->token != NULL) - db_oauth2_lookup_introspect(req); - else { - passdb_result = PASSDB_RESULT_INTERNAL_FAILURE; - error = "Internal error"; - db_oauth2_callback(req, passdb_result, error); - } - return; - } - db_oauth2_process_fields(req, &passdb_result, &error); + /* make sure token is NULL if no access_token is found */ + req->token = NULL; + array_foreach(result->fields, f) + if (strcmp(f->name, "access_token") == 0) + req->token = p_strdup(req->pool, f->value); + db_oauth2_lookup_continue(result, req); } - db_oauth2_callback(req, passdb_result, error); } #undef db_oauth2_lookup