当前位置: 首页 > 知识库问答 >
问题:

使用多个授权方案(HMAC 和 OATH)

齐成双
2023-03-14

好的,我有一个WebAPI Auth服务,用于/token请求并将不记名令牌返回给客户端,我已经将AppId和API密钥添加到属性中,因此我返回

{
"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 Key为每个请求生成Hmac SHA256签名。

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

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

我遇到的问题是,对该控制器的任何请求都将预期授权:承载…头,而HmacAuthentication属性也预期Authorization:amx头。

现在我知道你只能有一个授权标头,所以我的困惑是我如何在不破坏HTTP的情况下实现两个授权标头,有没有人同时使用OWIN OAuth和HMAC身份验证

我从Taiseer Joudeh学习了这些例子

使用ASP的基于令牌的身份验证。NET Web API 2、Owin和身份安全ASP。NET Web API使用API密钥身份验证–HMAC身份验证

共有1个答案

南宫阳焱
2023-03-14

这是一个很长时间没有答案,因为我已经解决了我原来的问题,我想我应该在这里张贴解决方案,以便其他人可以利用它。

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

现在,我可以拥有一个由 OAuth 令牌保护的 WebAPI 服务,并通过对请求实现 HMAC 授权来保护

 类似资料:
  • 本文向大家介绍Oracle给用户授权truncatetable的实现方案,包括了Oracle给用户授权truncatetable的实现方案的使用技巧和注意事项,需要的朋友参考一下 1,对其它用户下的表执行trundate table操作 开发说在用dwetl下执行调用shop用户下的表的时候提示没有权限操作,google了查了下,发现oracle账户没法直接赋予对某个表的truncate权限,那要

  • 我想写一个应用程序,允许与数据交互的两种RESTful形式;常规REST CRUDendpoint和Web-UI。 过去,我在JS中实现了UI的大部分功能,这将调用常规的RESTendpoint。这很好,但对于这个应用程序,我想使用Qute来执行生成页面内容的大部分基本功能。但是,为了正确地管理endpoint并确保正确的RBAC控制,我需要通过cookie而不是普通的头来访问JWT。这似乎是可能

  • Using a delegation key The collaborator can now push to the repository using Docker Content Trust. Docker will automatically choose and pick the right key for the targets/release role. Edit the file o

  • 授权交互流程 获取已授权信息 参数说明: 字段 类型 必须? 说明 type ThirdAuth 是 获取第三方授权信息标识。 如:ThirdAuth.QQ、ThirdAuth.WX、ThirdAuth.XMLY deviceTypeId String 是 设备类型 deviceId String 是 设备SN ThirdOauthToken 说明 字段 类型 必须? 说明 access_toke

  • 我的问题是:为了实现授权,是否有一种简单的方法来更改Olingo JPA处理器以在默认情况下连接表和过滤实体?这将需要我能够传入帐户过滤,也限制所有的结果。 我也尝试过这里描述的预处理和后处理。但是,过滤需要在查询中进行,而不是在返回结果之后,因为JPA查询将返回太多的结果,并且转换数千个对象的时间长且成本高。 到目前为止,我已经实现了一个CustomoDataJPaprocessor。但是,现在

  • Apache Kafka允许客户端通过SSL进行连接。默认情况下,SSL被禁用,但可以根据需要启用。 为每个Kafka broker生成SSL密钥和证书部署一个或多个支持SSL的brokers的第一步是为集群中的每台计算机生成密钥和证书。你可以使用Java的keytool实用程序来完成此任务。最初我们将生成一个临时密钥库的密钥,以便我们稍后可以导出并用CA签名。 keytool -