Reputation: 1202
I tried to use the logic of this curl command:
curl -s --insecure -i --header ${AUTH_BASIC} --header ${CONTENT_TYPE} -X POST https://idm/oauth2/token -d ${DATA}"
XAUTH_TOKEN="$(eval ${REQUEST} | grep -Po '(?<="access_token": ")[^"]*')"
echo "X-Auth-Token for '${_user}': ${XAUTH_TOKEN}
to write the request in c#:
//GETTING TOKEN...
String input2 = "'grant_type=password&username=<MyUsername on Lab .fiware.org&password=<myPassword>&client_id=<myClientID>&client_secret=<myClientSecret>'";
var httpWebRequest2 = (HttpWebRequest)WebRequest.Create("https://account.lab.fiware.org/oauth2/token");
httpWebRequest2.ContentType = "application/x-www-form-urlencoded";
//httpWebRequest2.Accept = "application/json";
string authInfo = "0555996e09f340d08a4baa8fff94f8c4" + ":" + "a62333f7045b4ab797669c28f9d26d30";
authInfo = Convert.ToBase64String(Encoding.Default.GetBytes(authInfo));
httpWebRequest2.Headers["Authorization"] = "Basic " + authInfo;
httpWebRequest2.Method = "POST";
using (var streamWriter = new StreamWriter(httpWebRequest2.GetRequestStream()))
{
streamWriter.Write(input2);
streamWriter.Flush();
streamWriter.Close();
}
var httpResponse2 = (HttpWebResponse)httpWebRequest2.GetResponse();
using (var streamReader = new StreamReader(httpResponse2.GetResponseStream()))
{
string result = streamReader.ReadToEnd();
Console.WriteLine(result);
}
But I get the following error:
When I tried doing this solution in localhost, like in the post here it works without a problem. Could it have anything to do with the fact that I registered the app under localhost:1307 in the lab account?
Upvotes: 1
Views: 200
Reputation: 491
There are not enough details to debug it, but KeyRock returns 400
when the request it's not well formed. You should get the message KeyRock returns. Still, with this request, you can get code 400
if:
The Authorization: Basic
header is missing, in which case you will get:
HTTP/1.1 400 BAD REQUEST
Date: Thu, 10 Sep 2015 08:43:25 GMT
Server: Apache/2.4.7 (Ubuntu)
Vary: Accept-Language,Cookie
X-Frame-Options: SAMEORIGIN
Content-Language: en
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html; charset=utf-8
Authentication header missing. Use HTTP Basic.
The request body (i.e. your input2
) is not being sent, in which case you will get:
HTTP/1.1 400 Bad Request
Date: Thu, 10 Sep 2015 08:47:49 GMT
Server: Apache/2.4.7 (Ubuntu)
Vary: Accept-Language,Cookie
X-Frame-Options: SAMEORIGIN
Content-Language: en
Connection: close
Transfer-Encoding: chunked
Content-Type: application/json
{"error": {"message": "create_access_token() takes exactly 3 arguments (2 given)", "code": 400, "title": "Bad Request"}}
The grant_type
is not defined in your request body:
HTTP/1.1 400 Bad Request
Date: Thu, 10 Sep 2015 08:52:58 GMT
Server: Apache/2.4.7 (Ubuntu)
Vary: Accept-Language,Cookie
X-Frame-Options: SAMEORIGIN
Content-Language: en
Connection: close
Transfer-Encoding: chunked
Content-Type: application/json
{"error": {"message": "grant_type missing in request body: {}", "code": 400, "title": "Bad Request"}}
Upvotes: 2