【发布时间】:2014-06-15 17:57:14
【问题描述】:
大约一个月前,我有一个项目与 ASP Identity OAuth 完美配合。我会使用grant_type、用户名和密码向 /Token 端点发送一个 POST 请求,一切都很好。
我最近开始了一个基于 Visual Studio 2013 RC2 的 SPA 模板的新项目。它与旧模板有点不同。身份验证设置为非常基本的默认值,
OAuthOptions = new OAuthAuthorizationServerOptions
{
TokenEndpointPath = new PathString("/Token"),
//AuthorizeEndpointPath = new PathString("/Account/Authorize"),
Provider = new ApplicationOAuthProvider(PublicClientId),
AccessTokenExpireTimeSpan = TimeSpan.FromDays(14),
AllowInsecureHttp = true
};
默认模板没有任何重大变化。我可以通过我已经实现的 Web API 控制器方法成功注册帐户;
// POST: /Account/Register
[HttpPost]
[AllowAnonymous]
public async Task<IHttpActionResult> Register(RegisterBindingModel model)
{
if (ModelState.IsValid)
{
var user = new TunrUser() { UserName = model.Email, Email = model.Email, DisplayName = model.DisplayName };
var result = await UserManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
return Created(new Uri("/api/Users/" + user.Id,UriKind.Relative), user.toViewModel());
}
else
{
return BadRequest(result.Errors.First());
}
}
return BadRequest(ModelState);
}
但是,无论我向 /Token 端点发布什么,我总是得到相同的响应。
{"error":"invalid_client"}
通常我会通过以下请求正文
grant_type=password&username=user%40domain.com&password=userpassword
但这会导致同样的错误。这在以前的 VS2013 SPA 模板/身份中有效。有什么变化?
谢谢!
【问题讨论】:
标签: c# asp.net asp.net-web-api asp.net-identity asp.net-web-api2