Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.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# 为什么标识为2的ASP.NET Web API不授予我访问受保护资源的权限?_C#_Asp.net_Asp.net Web Api_Asp.net Identity 2_Bearer Token - Fatal编程技术网

C# 为什么标识为2的ASP.NET Web API不授予我访问受保护资源的权限?

C# 为什么标识为2的ASP.NET Web API不授予我访问受保护资源的权限?,c#,asp.net,asp.net-web-api,asp.net-identity-2,bearer-token,C#,Asp.net,Asp.net Web Api,Asp.net Identity 2,Bearer Token,我有一个使用Identity 2的Web API。它似乎可以很好地对我进行身份验证,/Token端点将我反序列化的内容返回给一个AuthTicket实例,其内容如下: AccessToken: "averylongtoken" Expires: {2016/12/12 8:19:22 AM} ExpiresIn: 1209599 Issued: {2016/11/28 8:19:22 AM} TokenType: "bearer" Username: "myusername" 然后,当我发送如

我有一个使用Identity 2的Web API。它似乎可以很好地对我进行身份验证,
/Token
端点将我反序列化的内容返回给一个
AuthTicket
实例,其内容如下:

AccessToken: "averylongtoken"
Expires: {2016/12/12 8:19:22 AM}
ExpiresIn: 1209599
Issued: {2016/11/28 8:19:22 AM}
TokenType: "bearer"
Username: "myusername"
然后,当我发送如下请求时:

var response = await Client.GetAsync("api/appt/3/true", cancellationToken);
Client.DefaultRequestHeaders.Authorization
看起来像:

sameverylongtoken的承载者

我仍然得到一个
401-未授权
。这里可能出了什么问题?是否Web API不知何故没有接收或正确解密承载令牌?当我在API中设置断点,并在控制器操作中检查
User
属性时,它的所有属性都为null或default,但它有一个
ClaimsIdentity
,其属性也都为null或default,并且它的
Claims
集合为空


我是否必须手动设置所有索赔,而不是仅设置自定义索赔?我本以为
ApplicationAuthProvider.GrantResourceOwnerCredentials
至少会添加一个声明,例如用户名或id。

我再次查看了所有代码,不知何故丢失了将auth令牌添加到请求头中的行。在发送请求之前检查这些头很容易确认这一点,并且很容易修复。

我再次查看了所有代码,不知何故丢失了将auth令牌添加到请求头的行。在发送请求之前检查这些头很容易确认这一点,并且很容易修复。

如果在Fiddler中运行请求,是否在请求头中看到传入的令牌?还有,在GrantResourceOwnerCredentials方法中的OAuthProvider类的请求上下文中,您看到了什么?出于某种原因,我没有看到任何使用API url捕获的请求。当我将筛选器设置为仅主机
localhost:51999
、我的API,并从客户端运行post请求时,不会捕获任何内容。我在
GrantResourceOwnerCredentials
中没有看到任何请求上下文,只有
OAuthGrantResourceOwnerCredentialsContext
,并且该方法不是从
/Token
端点调用的,用于登录用户。这一切都很好,正如我清楚地指出的,在登录时,我从
/Token
获得了一个很好的响应,带有一个auth令牌,但它还不会出现在
GrantResourceOwnerCredentials
的标题中。如果您在Fiddler中运行您的请求,您是否在请求标题中看到传入的令牌?还有,在GrantResourceOwnerCredentials方法中的OAuthProvider类的请求上下文中,您看到了什么?出于某种原因,我没有看到任何使用API url捕获的请求。当我将筛选器设置为仅主机
localhost:51999
、我的API,并从客户端运行post请求时,不会捕获任何内容。我在
GrantResourceOwnerCredentials
中没有看到任何请求上下文,只有
OAuthGrantResourceOwnerCredentialsContext
,并且该方法不是从
/Token
端点调用的,用于登录用户。这一切都很好,正如我明确指出的,在登录时,我从
/Token
获得了一个很好的响应,带有一个auth令牌,但它还不会出现在
GrantResourceOwnerCredentials
的标题中。