Asp.net web api OAuth OWIN/Web API之外的API键

Asp.net web api OAuth OWIN/Web API之外的API键,asp.net-web-api,oauth,owin,asp.net-identity-2,Asp.net Web Api,Oauth,Owin,Asp.net Identity 2,我有一个有趣的场景,我希望得到一些指导 目前,我已经通过Web API和ASP.NET标识使用标准OWIN功能实现了OAuth。还成功实现了客户端凭据功能,该功能允许客户端(如浏览器和iPhone)执行匿名操作模式的API访问,直到出现RO登录 现在我们有了一个场景,我们希望构建一个类似于stripecheckout()的javascript(JSONP)小部件。正如您将看到的,通过提供一个简单的数据键属性作为脚本标记的一部分,可以非常容易地嵌入这个小部件。我的假设是,这是在后端创建的,作为一个

我有一个有趣的场景,我希望得到一些指导

目前,我已经通过Web API和ASP.NET标识使用标准OWIN功能实现了OAuth。还成功实现了客户端凭据功能,该功能允许客户端(如浏览器和iPhone)执行匿名操作模式的API访问,直到出现RO登录

现在我们有了一个场景,我们希望构建一个类似于stripecheckout()的javascript(JSONP)小部件。正如您将看到的,通过提供一个简单的数据键属性作为脚本标记的一部分,可以非常容易地嵌入这个小部件。我的假设是,这是在后端创建的,作为一个简单的API密钥,但除了可以从中调用它的注册域列表之外。当此密钥传递给API时,API将根据发出请求的域对其进行验证,以确保API可以访问授予该密钥的必要资源

我的问题是: 1.除了OWIN管道中的OAuth承载令牌之外,如何实现API密钥?我看到的所有文档通常都建议编写一个单独的委托处理程序来查找密钥等,但是我的OWIN管道难道不会走那么远,因为对操作本身的调用没有得到授权吗? 2.我们还在以下代码行中明确删除除OAuth之外的任何其他身份验证:

   config.SuppressDefaultHostAuthentication();
   config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));
  • 在js环境中存储机密几乎是不可能的情况下,是否有一种更简单的方法来验证javascript模式下仅使用客户端Id(无机密)的客户端

  • 我是否遗漏了一些可以简化此过程的明显方法

  • 我想我们已经解决了创建JSONP小部件的所有问题,但是这一部分让我有点困惑

    任何帮助都将不胜感激

    干杯,
    Anup

    由于Owin是一个管道,所有身份验证中间件都会在每个请求上执行。在您的示例中,一个请求的头中可能包含一个API密钥:第一个身份验证中间件可能是您的oauth/承载身份验证-如果没有相关的头,那么该中间件将不会向请求附加任何标识,请求将沿着管道继续。下一个中间件可能是一些API密钥身份验证中间件(您可以在此处找到一个实现:),它将检测您的API密钥头并将相关标识附加到请求。

    ?您解决了问题吗?