C# Owin安全处理程序-未对某些请求生成声明
我正在使用Owin安全处理程序验证Azure AD JWT,如以下示例所示: 在我的WebApi中,我创建了一个带有[Authorize]属性的方法来验证令牌。此方法调用Owin安全处理程序来验证令牌是否有效以及是否为请求生成了声明C# Owin安全处理程序-未对某些请求生成声明,c#,owin,claims-based-identity,C#,Owin,Claims Based Identity,我正在使用Owin安全处理程序验证Azure AD JWT,如以下示例所示: 在我的WebApi中,我创建了一个带有[Authorize]属性的方法来验证令牌。此方法调用Owin安全处理程序来验证令牌是否有效以及是否为请求生成了声明 [System.Web.Mvc.Authorize] private static bool IsTokenValid() { LoggingUtilities.Logger.TraceInformation("Validating
[System.Web.Mvc.Authorize]
private static bool IsTokenValid()
{
LoggingUtilities.Logger.TraceInformation("Validating JWT.");
return ClaimsPrincipal.Current.Claims != null;
}
这在大多数情况下都可以正常工作,但对于某些请求,即使令牌存在于请求中,声明也不会完全生成
以下是生成所有索赔的时间:
当索赔未正确生成时:
在这两种情况下,请求都具有有效的JWT令牌
如果您能帮助解决此问题,我们将不胜感激
更新:
我已经意识到,这些特定的请求没有经过安全处理程序的身份验证(看起来像是Owin Katana处理程序中的错误),即使请求是有效的令牌
app.UseWindowsAzureActiveDirectoryBearerAuthentication(
new WindowsAzureActiveDirectoryBearerAuthenticationOptions
{
Tenant = validTenant,
TokenValidationParameters = new TokenValidationParameters
{
ValidAudience = validAudience,
}
});
想知道当请求未经身份验证时,是否有办法强制对用户进行上述Owin安全处理程序设置的身份验证