加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-web-api – 使用多种授权方案(HMAC和OATH)

发布时间:2020-12-16 07:41:46 所属栏目:asp.Net 来源:网络整理
导读:好的,我有一个用于/ token请求的WebAPI Auth服务,并将Bearer令牌返回给客户端,我已经为属性添加了AppId和Api Key,所以我回来了 {"access_token": "...","token_type": "bearer","expires_in": 86399,"dm:appid": "1","dm:apikey": "...",".issued": "Wed,01
好的,我有一个用于/ token请求的WebAPI Auth服务,并将Bearer令牌返回给客户端,我已经为属性添加了AppId和Api Key,所以我回来了

{
"access_token": "...","token_type": "bearer","expires_in": 86399,"dm:appid": "1","dm:apikey": "...",".issued": "Wed,01 Jul 2015 20:46:45 GMT",".expires": "Thu,02 Jul 2015 20:46:45 GMT"
}

客户端应使用AppId和Api密钥为每个请求生成Hmac SHA256签名.

在我的控制器上,我使用了Authorize属性并创建了一个实现IAuthenticationFilter的HmacAuthentication属性

[RoutePrefix("api/account")]
[Authorize]
[HmacAuthentication]
public class AccountController : ApiController
{
    // rest of controller here
}

我遇到的问题是,对该控制器的任何请求都需要Authorization:Bearer …头和HmacAuthentication属性也需要Authorization:amx头.

现在我知道你只能拥有一个Authorization标头,所以我的quandry是如何在不破坏HTTP的情况下实现两个Authorization标头,是否有人实现了OWIN OAuth和HMAC认证的使用

我跟随了Taiseer Joudeh的这些例子

Token Based Authentication using ASP.NET Web API 2,Owin,and Identity
Secure ASP.NET Web API using API Key Authentication – HMAC Authentication

解决方法

这已经很长一段时间没有答案了,因为我已经解决了我的原始问题,我想我应该在这里发布解决方案,以便其他人可以使用它.

最后,解决方案是在评论中添加一个自定义标题,如@Glaucus.对于标准OAuth授权,我添加了Authorize标头属性.为了满足我对HMAC的需求,我只是在标题中添加了X-Authorize属性,并修改了我的代码以使用此标头.

现在,我可以通过OAuth令牌和对请求实施HMAC授权来保护WebAPI服务

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读