使用Web Api验证.NET MVC应用程序

时间:2014-03-19 19:55:35

标签: asp.net-mvc asp.net-web-api owin

我有一个基于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)
      {
           //
      }
}

它得到了令牌,但现在呢?

3 个答案:

答案 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

希望有所帮助。