Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.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# 如何使用身份验证过滤器将头设置为令牌请求OAuth?_C#_Asp.net Web Api_Oauth - Fatal编程技术网

C# 如何使用身份验证过滤器将头设置为令牌请求OAuth?

C# 如何使用身份验证过滤器将头设置为令牌请求OAuth?,c#,asp.net-web-api,oauth,C#,Asp.net Web Api,Oauth,我正在开发一个基于OAuth的Web API应用程序。 如何使用身份验证过滤器将标头设置为从OAuth请求接收的令牌 参考链接: 我正在尝试检查所有类型的方法,但它对我不起作用: httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "Your Oauth token"); context.Request.Headers.Add("Bearer", "Your Oaut

我正在开发一个基于OAuth的Web API应用程序。 如何使用身份验证过滤器将标头设置为从OAuth请求接收的令牌

参考链接:

我正在尝试检查所有类型的方法,但它对我不起作用:

httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "Your Oauth token");

context.Request.Headers.Add("Bearer", "Your Oauth token");
我的API调用源代码是:

[BasicAuthenticator]
[HttpGet]   
[Authorize]
public IEnumerable<string> Get()
{
    return new string[] { "value1", "value2" };
}
[BasicAuthenticator]
[HttpGet]
[授权]
公共IEnumerable Get()
{
返回新字符串[]{“value1”,“value2”};
}
我得到的回应是:

{“消息”:“此请求的授权已被拒绝。”}

我的令牌生成代码如下:

公共类基本身份验证程序:属性,IAAuthenticationFilter
{
public bool AllowMultiple{get;set;}
公共任务AuthenticationAsync(HttpAuthenticationContext上下文,CancellationToken CancellationToken)
{
var req=上下文请求;
var reqHeader=context.Request.Headers;
如果(!reqHeader.包含(“授权”))
{
var pairs=新列表
{
新的KeyValuePair(“授权类型”、“密码”),
新的KeyValuePair(“用户名”、“xxxx”),
新的KeyValuePair(“密码”,“xxxx”)
};
var内容=新FormUrlEncodedContent(成对);
var client1=新的HttpClient();
var response=client1.PostAsync(“http://localhost:56672/“+”标记“,内容)。结果;
var responseBody=response.Content.ReadAsStringAsync();
var obj=JObject.Parse(responseBody.Result);
var tokenVal=(字符串)obj[“访问令牌”];
client1.DefaultRequestHeaders.Clear();
client1.DefaultRequestHeaders.Add(“授权”、“持有人”+tokenVal);
}
返回Task.FromResult(0);
}

}
您需要在API上定义活动身份验证方案。尝试将
[Authorize]
替换为
[Authorize(ActiveAuthenticationSchemes=“Bearer”)]

看看这里:您在哪里生成令牌?在服务器属性BasicAuthenticator中?客户端必须发送令牌才能进行身份验证。检查我前面的comment.ActiveAuthenticationSchemes中的链接是否缺少程序集引用?