options: added basic SASL XOAUTH2 support
Added the ability to specify an XOAUTH2 bearer token [RFC6750] via the option CURLOPT_XOAUTH2_BEARER for authentication using RFC6749 "OAuth 2.0 Authorization Framework".
This commit is contained in:
parent
19a05c908f
commit
06c1bea72f
@ -1553,6 +1553,9 @@ typedef enum {
|
|||||||
* prototype defines. (Deprecates CURLOPT_PROGRESSFUNCTION) */
|
* prototype defines. (Deprecates CURLOPT_PROGRESSFUNCTION) */
|
||||||
CINIT(XFERINFOFUNCTION, FUNCTIONPOINT, 219),
|
CINIT(XFERINFOFUNCTION, FUNCTIONPOINT, 219),
|
||||||
|
|
||||||
|
/* The XOAUTH2 bearer token */
|
||||||
|
CINIT(XOAUTH2_BEARER, OBJECTPOINT, 220),
|
||||||
|
|
||||||
CURLOPT_LASTENTRY /* the last unused */
|
CURLOPT_LASTENTRY /* the last unused */
|
||||||
} CURLoption;
|
} CURLoption;
|
||||||
|
|
||||||
|
@ -264,6 +264,7 @@ _CURL_WARNING(_curl_easy_getinfo_err_curl_slist,
|
|||||||
(option) == CURLOPT_RTSP_SESSION_ID || \
|
(option) == CURLOPT_RTSP_SESSION_ID || \
|
||||||
(option) == CURLOPT_RTSP_STREAM_URI || \
|
(option) == CURLOPT_RTSP_STREAM_URI || \
|
||||||
(option) == CURLOPT_RTSP_TRANSPORT || \
|
(option) == CURLOPT_RTSP_TRANSPORT || \
|
||||||
|
(option) == CURLOPT_XOAUTH2_BEARER || \
|
||||||
0)
|
0)
|
||||||
|
|
||||||
/* evaluates to true if option takes a curl_write_callback argument */
|
/* evaluates to true if option takes a curl_write_callback argument */
|
||||||
|
15
lib/url.c
15
lib/url.c
@ -1569,6 +1569,13 @@ CURLcode Curl_setopt(struct SessionHandle *data, CURLoption option,
|
|||||||
result = setstropt(&data->set.str[STRING_PASSWORD],
|
result = setstropt(&data->set.str[STRING_PASSWORD],
|
||||||
va_arg(param, char *));
|
va_arg(param, char *));
|
||||||
break;
|
break;
|
||||||
|
case CURLOPT_XOAUTH2_BEARER:
|
||||||
|
/*
|
||||||
|
* XOAUTH2 bearer token to use in the operation
|
||||||
|
*/
|
||||||
|
result = setstropt(&data->set.str[STRING_BEARER],
|
||||||
|
va_arg(param, char *));
|
||||||
|
break;
|
||||||
case CURLOPT_POSTQUOTE:
|
case CURLOPT_POSTQUOTE:
|
||||||
/*
|
/*
|
||||||
* List of RAW FTP commands to use after a transfer
|
* List of RAW FTP commands to use after a transfer
|
||||||
@ -2488,6 +2495,7 @@ static void conn_free(struct connectdata *conn)
|
|||||||
|
|
||||||
Curl_safefree(conn->user);
|
Curl_safefree(conn->user);
|
||||||
Curl_safefree(conn->passwd);
|
Curl_safefree(conn->passwd);
|
||||||
|
Curl_safefree(conn->xoauth2_bearer);
|
||||||
Curl_safefree(conn->options);
|
Curl_safefree(conn->options);
|
||||||
Curl_safefree(conn->proxyuser);
|
Curl_safefree(conn->proxyuser);
|
||||||
Curl_safefree(conn->proxypasswd);
|
Curl_safefree(conn->proxypasswd);
|
||||||
@ -5181,6 +5189,13 @@ static CURLcode create_conn(struct SessionHandle *data,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(data->set.str[STRING_BEARER]) {
|
||||||
|
conn->xoauth2_bearer = strdup(data->set.str[STRING_BEARER]);
|
||||||
|
if(!conn->xoauth2_bearer) {
|
||||||
|
return CURLE_OUT_OF_MEMORY;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#ifndef CURL_DISABLE_PROXY
|
#ifndef CURL_DISABLE_PROXY
|
||||||
/*************************************************************
|
/*************************************************************
|
||||||
* Extract the user and password from the authentication string
|
* Extract the user and password from the authentication string
|
||||||
|
@ -876,6 +876,8 @@ struct connectdata {
|
|||||||
char *passwd; /* password string, allocated */
|
char *passwd; /* password string, allocated */
|
||||||
char *options; /* options string, allocated */
|
char *options; /* options string, allocated */
|
||||||
|
|
||||||
|
char *xoauth2_bearer; /* bearer token for xoauth2, allocated */
|
||||||
|
|
||||||
char *proxyuser; /* proxy user name string, allocated */
|
char *proxyuser; /* proxy user name string, allocated */
|
||||||
char *proxypasswd; /* proxy password string, allocated */
|
char *proxypasswd; /* proxy password string, allocated */
|
||||||
curl_proxytype proxytype; /* what kind of proxy that is in use */
|
curl_proxytype proxytype; /* what kind of proxy that is in use */
|
||||||
@ -1367,6 +1369,8 @@ enum dupstring {
|
|||||||
STRING_TLSAUTH_PASSWORD, /* TLS auth <password> */
|
STRING_TLSAUTH_PASSWORD, /* TLS auth <password> */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
STRING_BEARER, /* <bearer>, if used */
|
||||||
|
|
||||||
/* -- end of strings -- */
|
/* -- end of strings -- */
|
||||||
STRING_LAST /* not used, just an end-of-list marker */
|
STRING_LAST /* not used, just an end-of-list marker */
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user