OneDrive file uploads failing when source URL is to a TLS 1.2 server
$ curl -L -H"Authorization: $ACCESS_TOKEN" -H"Content-Type: application/json" -H"Prefer: respond-async" "https://graph.microsoft.com/v1.0/me/drive/root/children" -d'{
"#microsoft.graph.sourceUrl": "https://tls-v1-2.badssl.com:1012/icons/icon-green.png",
"name": "icon-green.png",
"file": { }
}'
This returns a 202 Accepted, with a Location header containing a URL to track the upload. Following this returns:
{"operation":"DownloadUrl","status":"failed","statusDescription":"Unexpected response 'InternalServerError The underlying connection was closed: An unexpected error occurred on a send.' when downloading all content"}
With a TLS 1.0 Server (following the Location header)
$ curl -L -H"Authorization: $ACCESS_TOKEN" -H"Content-Type: application/json" -H"Prefer: respond-async" "https://graph.microsoft.com/v1.0/me/drive/root/children" -d'{
"#microsoft.graph.sourceUrl": "https://tls-v1-0.badssl.com:1010/icons/icon-red.png",
"name": "icon-green.png",
"file": { }
}'
{"operation":"DownloadUrl","percentageComplete":100.0,"resourceId":"6A071D3FEEC6C6B6!115","status":"completed","statusDescription":"URL was successfully downloaded to target"}
It should, but obviously it's not. We'll look into adding the support.
Update:
This has now been fixed - requests to download files on a TLS 1.2 endpoint should work.
Related
We have a chrome extension in Google web store under my Google user id and I want to give API access to my colleagues (in the same organization). I am following this guide but it is not allowing me to access API. Here is exactly what I did
Created a Google Cloud console project using the email id that is
used to access the chrome store
Enabled Google Chrome Web Store API
Generated Oauth credentials as described in the link
Added my colleagues email address as test users under Oauth Consent section
Generated the "code" as described in the link using Colleague's Google ID
Successfully got the token by sending the curl request as described in the instructions above
Sent a curl API GET request using the token as shown below
curl \
-H "Authorization: $TOKEN" \
-H "x-goog-api-version: 2" \
-H "Content-Length: 0" \
-H "Expect:" \
-X GET \
-v \
https://www.googleapis.com/chromewebstore/v1.1/items/ITEM_ID?projection=DRAFT
The response I get is this
{
"error": {
"code": 403,
"message": "Forbidden",
"errors": [
{
"message": "Forbidden",
"domain": "global",
"reason": "forbidden"
}
]
}
}
Any idea on what I am missing here?
https://www.googleapis.com/chromewebstore/v1.1/items/ITEM_ID?projection=DRAFT
The Authorization header is missing the token type: Bearer
-H "Authorization: Bearer $TOKEN"
I use the GCP Text-to-Speech API to create greetings and interactive menus that are played to phone customers who call into businesses. I have successfully used the Text-to-Speech API in the past using this Google quick-start: Google Cloud Text-to-Speech
I used the same quick-start guide again for a new organization and project but I keep getting an invalid key error which I have been unable to debug.
Here are the commands I have used to invoke the service and the results:
# curl -X POST \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)”\
-H "Content-Type: application/json; charset=utf-8" \
-d #request.json \
https://texttospeech.googleapis.com/v1/text:synthesize > synthesize-output-base64.txt
{
"error": {
"code": 403,
"message": "The request is missing a valid API key.",
"status": "PERMISSION_DENIED"
}
}
I tried again with a different authentication header:
# curl -X POST \
-H "X-Goog-Api-Key:***my_API_key***.json" \
-H "Content-Type: application/json; charset=utf-8" \
-d #request.json \
https://texttospeech.googleapis.com/v1/text:synthesize > synthesize-output-base64.txt
{
"error": {
"code": 400,
"message": "API key not valid. Please pass a valid API key.",
"status": "INVALID_ARGUMENT",
"details": [
{
"#type": "type.googleapis.com/google.rpc.ErrorInfo",
"reason": "API_KEY_INVALID",
"domain": "googleapis.com",
"metadata": {
"service": "texttospeech.googleapis.com"
}
}
]
}
}
I have re-verified the following configurations:
The Text-to-Speech API is enabled for my project.
The credential (service account) I am attempting to use is listed with the Text-to-Speech API as compatible. I verified that that service account key is the key that was used in the attempted authentications.
I compared my configuration on GCP with another working configuration I manage for a different company. There are no differences I can see.
I compared my key and the other company's working key and they are identical except for the specific user data.
The billing account for the project is active with valid payment card in place.
These two links were helpful but did not clear up the problem:
Google Cloud Text-to-Speech API - permission error
Google Cloud Text to Speech INVALID API KEY
Any help on this issue would be very appreciated!
The solution to this problem is to install the Google Cloud SDK.
The CLI was missing so the returned output from gcloud auth application-default print-access-token was an error.
I enabled the Cloud Text-to-Speech API
I created a service account with Editor role.
Note: Ensure you have set the GOOGLE_APPLICATION_CREDENTIALS environment variable to your service account private key file path.
Save the request body in a file called request.json,
Execute the following command:
curl -X POST \
-H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
-H "Content-Type: application/json; charset=utf-8" \
-d #request.json \
https://texttospeech.googleapis.com/v1/text:synthesize
Response body
{
"audioContent": "//NExAARcrn0ABhEudAgAjuem7vohckY3IAFgWvxrBkAD//ARvqc/QhCZ/6EJO6E9Dvo2cjHPQhLfWQ/rTU7yEznsoGBn8hJz5xbQiOgEfwDzD1DVARLPlzGNXylbM8s//NExA0SCnoAAUIQAd8vlrM9DPR//6t5fpUpS
sk3MbzGUvMhqOpdSsjmcpeY2Zz ...................
}
Everything worked as expected
I am trying to add a certificate using this documentation kong docs
But I am unable to figure out how to generate these "cert" and "key" pem files.
I tried with public and private keys generated by puttygen and did not workout.
A sample will be extremely helpful
{
"message": "3 schema violations (cert: invalid certificate: x509.cert.new: asn1_lib.c:101:error:0D07207B:asn1 encoding routines:ASN1_get_object:header too long; key: invalid key: pkey.new: tasn_dec.c:1130:error:0D0680A8:asn1 encoding routines:asn1_check_tlen:wrong tag; tags: expected a set)",
"name": "schema violation",
"fields": {
"tags": "expected a set",
"cert": "invalid certificate: x509.cert.new: asn1_lib.c:101:error:0D07207B:asn1 encoding routines:ASN1_get_object:header too long",
"key": "invalid key: pkey.new: tasn_dec.c:1130:error:0D0680A8:asn1 encoding routines:asn1_check_tlen:wrong tag"
},
"code": 2
}
This is the error I received
Try this command
curl -i -X 'POST' http://localhost:8001/certificates \
-F 'cert= Content PEM archive ' \
-F 'key= Content key archive without password ' \
-F 'snis=subdomain.mydomain.com'
I can't say I quite understand it, but after looking at what some others have done online I can get it to work by just having the same data in two files and then running a line that prints the data from a file, like so:
curl -i -m 60 -X POST http://localhost:8001/certificates
-F "cert=$(cat cert.pem)"
-F "key=$(cat key.pem)"
-F "snis=domain.net"
Credit:
https://discuss.konghq.com/t/adding-certificate-does-not-create-sni/2497
I'm having trouble setting a Webhook URL for the Cloudflare Stream product. I am receiving an 10012 error when attempting to access the API endpoint.
I'm following the documentation located here: https://developers.cloudflare.com/stream/webhooks/
Here's the example cURL call I make:
curl -X "PUT" "https://api.cloudflare.com/client/v4/accounts/{MY_ACCOUNT}/media/webhook" \
-H 'X-Auth-Key: {MY_AUTH_KEY}' \
-H 'X-Auth-Email: {MY_EMAIL}' \
-d "{\"notification_url\":\"{A_URL}\"}"
The response received is:
{
"result": null,
"success": false,
"errors": [
{
"code": 10012,
"message": "Forbidden"
}
],
"messages": null
}
I'm confident that I am entering the correct authentication key, account ID, etc. It's all copy/pasted from dash.cloudflare.com and have verified that this API key works on other API endpoints.
I submitted a ticket and they replied after they “made some internal configuration changes” and now the webhook API endpoints work flawlessly. Thanks for the quick help, Cloudflare!
I'm trying to create container in bluemix with API as it in http://ccsapi-doc.mybluemix.net In the document it mentions:
When using the API with the new model, the following HTTP headers shall be provided:
X-Auth-Token = Bluemix JWT Token
X-Auth-Project-Id = Space GUID
But I have no idea how to get or generate the Bluemix JWT Token. Can someone help me ?
You can get X-Auth-Token by cf oauth-token command. Then copy and paste rest of the part after bearer. And you also can get X-Auth-Project-Id by cf space --guid <space Name>. Please see below commands;
$ cf login -a api.<region>.bluemix.net -u <space name> -o <org name> -s <space name>
$ cf ic login
$ cf oauth-token
$ cf space <space-name> --guid (space name where the container exists)
Try expanding the Authentication section on that page and the "Get TLS Certificate" to show more info
When you enter the values and click "try it out" you will see additional output generated with token info.
This is an alternative Method:
You can retrieve X-Auth-Token and X-Auth-Project-Id with this command:
cf login
CF_TRACE=true cf ic login
Copy all output in a .txt file and search for X-Auth-Token and X-Auth-Project-Id
here there is a simple example:
curl -X GET --header "Accept: application/json" --header "X-Auth-Token: asdlkfajdfdkaldkjfskl239049283049jsdfjksl29304" --header "X-Auth-Project-Id: sdfadf-0090-43ef-22932-23434234" "https://containers-api.ng.bluemix.net/v3/containers/quota"
Response:
The output of API is like this:
{
"account_type": "TRIAL",
"country_code": "ITA",
"org_quota": {
"floating_ips_max": "2",
"floating_ips_space_default": "2",
"floating_ips_usage": 2,
"ram_max": "2048",
"ram_space_default": "2048",
"ram_usage": 2048,
"subnet_usage": -1,
"subnets_default": "5",
"subnets_max": 0
},
"space_quota": {
"floating_ips_max": 2,
"ram_max": 2048,
"subnets_max": -1
}