我有一个基于SPA VS 2013模板的Web Api 2项目。我在该Api中配置了不记名令牌认证。
我还有一个单独的MVC 5项目,我想使用该Web Api进行身份验证。那可能吗?怎么样?
到目前为止我所做的(在我的Mvc客户端中):
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("http://localhost/MyApi/");
var response = client.PostAsync("Token", new StringContent("grant_type=password&username=teste&password=123456", Encoding.UTF8)).Result;
if (response.IsSuccessStatusCode)
{
//
}
}
它得到了令牌,但现在呢?
答案 0 :(得分:4)
如果您获得了令牌,则应该全部设置。您只需要在每个请求的标题中提供它,例如:
Authorization: Bearer boQtj0SCGz2GFGz[...]
修改强>
使用HttpClient,您可以执行以下操作:
var requestMessage = new HttpRequestMessage(HttpMethod.Post, "http://localhost/MyApi/");
requestMessage.Headers.Add("Authorization", "Bearer boQtj0SCGz2GFGz[...]");
答案 1 :(得分:2)
我怀疑你正在使用资源所有者流程(uid / pwd)。如果您现在有一个单独的MVC项目的新客户端,它将被视为代码流客户端,因此这意味着您需要支持OAuth2授权服务器中的代码流。遗憾的是,来自Microsoft的Katana OAuth2授权服务器中间件并非真正用于支持更复杂的OAuth2方案,因此您可能需要考虑使用单独的专用OAuth2授权服务器。 Thinktecture AuthorizationServer是.NET中的一个免费的开源实现,您可以使用它:
http://thinktecture.github.io/Thinktecture.AuthorizationServer/
否则,您几乎是从头开始实施OAuth2授权服务器。
答案 2 :(得分:0)
您可以在asp.net web api中使用和配置ASP.NET Identity和OWIN组件来提供身份验证服务。
ASP.NET Identity可以与所有ASP.NET框架一起使用,例如ASP.NET MVC,Web窗体,Web页面,Web API和SignalR。
有关它的更多信息,请查看此链接
http://www.asp.net/identity/overview/getting-started/introduction-to-aspnet-identity
希望有所帮助。