Web API 2和HttpClient

时间:2016-03-14 21:28:20

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

我有一个web api和MVC项目,

web api部署在api.domain.com MVC应用程序部署在domain.com

我最近在API上获得了某些方法,它需要身份验证(授权类型:密码)。

我希望在MVC应用程序后面的代码中传递令牌而不是javascript,以保证其安全并远离某人嗅探角度js流量。

我做了一些研究,我应该使用HttpClient类。如果是这种情况,该客户端如何处理刷新令牌?现在令牌在8小时后到期,我知道还会发出刷新令牌,但是HttpClient会自动处理这个,还是我必须编写自己的逻辑来检查请求是否因过期令牌而被拒绝。

谢谢!

2 个答案:

答案 0 :(得分:2)

  

我做了一些研究,我应该使用HttpClient类。如果是这样的话   这个客户端如何处理刷新令牌?

正如其名称所示,HttpClient类是HTTP协议客户端。它完全不了解OAuth 2.0,在这方面也没有关于刷新令牌的信息。所以你应该自己写这个逻辑。基本上你应该遵循的流程是这样的:

  1. 使用HttpClient向目标端点发送HTTP请求,并在Authorization标头字段中包含您现有的OAuth Bearer令牌。
  2. 如果请求成功,那么你很高兴。如果请求因401失败,那么您应该使用刷新令牌来续订访问令牌,然后使用新的访问令牌重复步骤1。

答案 1 :(得分:1)

我认为使用HttpMessageHandler可以帮助你。

  

这种连接到HttpClient的方法是使用带有HttpMessagHandler的HttpClient构造函数:

     

1://创建客户端并在消息路径中插入OAuth消息处理程序

     

2://在请求中插入OAuth身份验证标头

     

3:HttpClient client = new HttpClient(new OAuthMessageHandler(new HttpClientHandler()));

     

HttpClientHandler是HttpClient提供的默认“网络”处理程序,它实际发送请求并从网络接收响应。

请参阅此页面以获取完整的详细信息:https://blogs.msdn.microsoft.com/henrikn/2012/02/16/extending-httpclient-with-oauth-to-access-twitter/