Include error_desc/error_uri as well for OAuth

This commit is contained in:
Hao Kung 2015-11-19 15:06:20 -08:00
parent 432850900f
commit 620622f260
2 changed files with 19 additions and 5 deletions

View File

@ -38,7 +38,20 @@ namespace Microsoft.AspNet.Authentication.OAuth
var error = query["error"];
if (!StringValues.IsNullOrEmpty(error))
{
return AuthenticateResult.Failed(error);
var errorMessage = new StringBuilder();
errorMessage.Append(error);
var errorDescription = query["error_description"];
if (!StringValues.IsNullOrEmpty(errorDescription))
{
errorMessage.Append(";Description=").Append(errorDescription);
}
var errorUri = query["error_uri"];
if (!StringValues.IsNullOrEmpty(errorUri))
{
errorMessage.Append(";Uri=").Append(errorUri);
}
return AuthenticateResult.Failed(errorMessage.ToString());
}
var code = query["code"];

View File

@ -270,16 +270,17 @@ namespace Microsoft.AspNet.Authentication.Google
};
}
});
var sendTask = server.SendAsync("https://example.com/signin-google?error=OMG&error_description=SoBad&error_uri=foobar");
if (redirect)
{
var transaction = await server.SendAsync("https://example.com/signin-google?error=OMG");
var transaction = await sendTask;
Assert.Equal(HttpStatusCode.Redirect, transaction.Response.StatusCode);
Assert.Equal("/error?ErrorMessage=OMG", transaction.Response.Headers.GetValues("Location").First());
Assert.Equal("/error?ErrorMessage=OMG"+UrlEncoder.Default.Encode(";Description=SoBad;Uri=foobar"), transaction.Response.Headers.GetValues("Location").First());
}
else
{
var error = await Assert.ThrowsAnyAsync<Exception>(() => server.SendAsync("https://example.com/signin-google?error=OMG"));
Assert.Equal("OMG", error.GetBaseException().Message);
var error = await Assert.ThrowsAnyAsync<Exception>(() => sendTask);
Assert.Equal("OMG;Description=SoBad;Uri=foobar", error.GetBaseException().Message);
}
}