Nei*_*ens 5 oauth hmac asp.net-web-api owin
好的,我有一个用于/ 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"
}
Run Code Online (Sandbox Code Playgroud)
客户端应使用AppId和Api密钥为每个请求生成Hmac SHA256签名.
在我的控制器上,我使用了Authorize属性并创建了一个实现IAuthenticationFilter的HmacAuthentication属性
[RoutePrefix("api/account")]
[Authorize]
[HmacAuthentication]
public class AccountController : ApiController
{
// rest of controller here
}
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,对此控制器的任何请求都会期望Authorization: Bearer ...标头和HmacAuthentication属性也需要Authorization: amx标头.
现在我知道你只能拥有一个Authorization标头,所以我的quandry是如何在不破坏HTTP的情况下实现两个Authorization标头,是否有人实现了OWIN OAuth和HMAC认证的使用
我跟随了Taiseer Joudeh的这些例子
使用ASP.NET Web API 2,Owin和Identity Secure ASP.NET Web API使用API密钥身份验证进行基于令牌的身份验证 - HMAC身份验证
已经很长一段时间没有答案了,自从我解决了最初的问题后,我想我应该在这里发布解决方案,以便其他人可以使用它。
最后,解决方案是添加一个自定义标头,如 @Glaucus 在他们的评论中建议的那样。对于标准 OAuth 授权,我添加了Authorize标头属性。为了满足我对 HMAC 的需求,我只是X-Authorize向标头添加了一个属性,并修改了我的代码以使用此标头。
现在我可以通过 OAuth 令牌并通过对请求实施 HMAC 授权来保护 WebAPI 服务
| 归档时间: |
|
| 查看次数: |
2172 次 |
| 最近记录: |