Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用DotNetOpenAuth实现API密钥_C#_Authentication_Oauth_Asp.net Web Api_Dotnetopenauth - Fatal编程技术网

C# 使用DotNetOpenAuth实现API密钥

C# 使用DotNetOpenAuth实现API密钥,c#,authentication,oauth,asp.net-web-api,dotnetopenauth,C#,Authentication,Oauth,Asp.net Web Api,Dotnetopenauth,我需要为我们将要托管的一些web服务实现身份验证。我想使用开放标准,所以我对OAuth感兴趣 我将为这些服务使用WebAPI 因此,这里是我遇到麻烦的地方:我读过的大部分或可能所有Api密钥/OAuth场景都涉及到某个点或另一个点,即坐在屏幕前的用户 我需要整合一个业务合作伙伴将调用的API。呼叫将来自一个自动化的过程-在链中没有一个人可以被重定向到具有登录凭据的网站 然而,我不希望任何人过来打电话给我 所以,我读到了OAuth,以及它如何使用一个共享的秘密来签署每个请求,我想这就是我想要的。我

我需要为我们将要托管的一些web服务实现身份验证。我想使用开放标准,所以我对OAuth感兴趣

我将为这些服务使用WebAPI

因此,这里是我遇到麻烦的地方:我读过的大部分或可能所有Api密钥/OAuth场景都涉及到某个点或另一个点,即坐在屏幕前的用户

我需要整合一个业务合作伙伴将调用的API。呼叫将来自一个自动化的过程-在链中没有一个人可以被重定向到具有登录凭据的网站

然而,我不希望任何人过来打电话给我

所以,我读到了OAuth,以及它如何使用一个共享的秘密来签署每个请求,我想这就是我想要的。我要么设置会话密钥,要么考虑将其中一个参数设为蜱值,只接受短时间帧内的请求等。 我有点希望我可以使用DotNetOpenAuth来完成这个或类似的事情,但是我遇到的每个例子都是从用户被重定向到登录页面开始的。我只需要两条腿的身份验证

是否有使用DotNetOpenAuth执行此操作的示例


有更好的方法吗?

如果您正在查看OAuth 2,那么您描述的流程就是

这种双腿/服务帐户类型的流没有基于web页面的流

DotNetOpenAuth支持客户端凭据授予。你可以看到一个例子;但是,请注意,即使作者声明它是资源所有者密码凭据授予,但实际上它是客户端凭据授予

上面的博文与最新的DotNetOpenAuth代码库有点不同步,但是这些代码很快就被识别和修改了


我相信目前的DotNetOpenAuth只支持使用Http基本身份验证发布承载令牌。还有其他更奇特的扩展OAuth 2,具有类似的流,例如,但如上所述,它还不是DotNetOpenAuth的一部分。

如果您正在查看OAuth 2,那么您描述的流就是

这种双腿/服务帐户类型的流没有基于web页面的流

DotNetOpenAuth支持客户端凭据授予。你可以看到一个例子;但是,请注意,即使作者声明它是资源所有者密码凭据授予,但实际上它是客户端凭据授予

上面的博文与最新的DotNetOpenAuth代码库有点不同步,但是这些代码很快就被识别和修改了


我相信目前的DotNetOpenAuth只支持使用Http基本身份验证发布承载令牌。还有其他更奇特的扩展OAuth 2,具有类似的流程,例如,但如前所述,这还不是DotNetOpenAuth的一部分。

Hi Mark,我已经通读了代码。有一点我有点困惑:那里有一些代码加载公共和私有证书。我原以为OAuth是为了提供一种不依赖SSL证书的身份验证方法。这是必要的步骤吗?我在这里遗漏了什么?Hi@JMarsch OAuth 2规范与OAuth 1的不同之处在于它的所有请求都依赖HTTPS通信,这在理论上允许不受保护地发送承载令牌。。。然而,我们确实应该保护持票人代币。生成的令牌(即承载令牌)需要被信任。因此,在示例博客中,使用这些示例中SSL证书的私钥对其进行签名。尽管OAuth 2规范中没有强制要求对承载令牌进行签名或加密,但建议这样做。因此,DotNetOpenAuth将签名应用于令牌。嗨,马克,我已经通读了代码。有一点我有点困惑:那里有一些代码加载公共和私有证书。我原以为OAuth是为了提供一种不依赖SSL证书的身份验证方法。这是必要的步骤吗?我在这里遗漏了什么?Hi@JMarsch OAuth 2规范与OAuth 1的不同之处在于它的所有请求都依赖HTTPS通信,这在理论上允许不受保护地发送承载令牌。。。然而,我们确实应该保护持票人代币。生成的令牌(即承载令牌)需要被信任。因此,在示例博客中,使用这些示例中SSL证书的私钥对其进行签名。尽管OAuth 2规范中没有强制要求对承载令牌进行签名或加密,但建议这样做。因此,DotNetOpenAuth将签名应用于令牌。