Asp.net core 由Azure Active Directory v1保护的asp.net核心webapi
我有一个应用程序,前端使用React,后端使用asp.net核心webapi 为了保证前端的安全,我使用了adal.js,它工作得很好。我可以得到令牌和我需要的所有信息 问题是我想将令牌传递给webapi,它应该允许或阻止请求。在过去,有一个nugetAsp.net core 由Azure Active Directory v1保护的asp.net核心webapi,asp.net-core,jwt,azure-active-directory,adal,asp.net-core-webapi,Asp.net Core,Jwt,Azure Active Directory,Adal,Asp.net Core Webapi,我有一个应用程序,前端使用React,后端使用asp.net核心webapi 为了保证前端的安全,我使用了adal.js,它工作得很好。我可以得到令牌和我需要的所有信息 问题是我想将令牌传递给webapi,它应该允许或阻止请求。在过去,有一个nugetMicrosoft.Owin.Security.ActiveDirectory运行得很好,但现在我似乎应该使用Microsoft.AspNetCore.Authentication.JwtBearer,事情就不同了 我已经在经典Azure门户中设置
Microsoft.Owin.Security.ActiveDirectory
运行得很好,但现在我似乎应该使用Microsoft.AspNetCore.Authentication.JwtBearer
,事情就不同了
我已经在经典Azure门户中设置了客户端/api应用程序,并授予api访问权限以验证客户端令牌
下面是我的Startup.cs的样子:
app.UseJwtBearerAuthentication(new JwtBearerOptions
{
AutomaticAuthenticate = true,
AutomaticChallenge = true,
Authority = ConfigurationManager.AppSettings["ida:AADInstance"] + ConfigurationManager.AppSettings["ida:TenantId"],
Audience = ConfigurationManager.AppSettings["ida:Audience"],
});
当我尝试使用[Authorize]属性访问webapi控制器(使用承载令牌传递授权标头)时,出现以下错误:
Microsoft.AspNetCore.Hosting.Internal.WebHost:信息:请求启动HTTP/1.1 POST 0
Microsoft.AspNetCore.Authentication.JwtBearer.jwtbearermiddle软件:信息:无法验证令牌EYJ0EXAIIJK
Microsoft.IdentityModel.Tokens.SecurityTokenInvalidSignatureException:IDX10500:签名验证失败。没有提供安全密钥来验证签名。
位于System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.ValidateSignature(字符串令牌,令牌验证参数validationParameters)
位于System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.ValidateToken(字符串令牌、令牌验证参数validationParameters、SecurityToken和ValidateToken)
在Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler.d_u1.MoveNext()中
我尝试了所有不同的设置,但似乎都不起作用。我找到的资源与Azure AD B2C或Azure AD v2端点相关,因为由于adal.js,我仍在使用“经典”,所以我找不到任何可以帮助我的东西
有什么线索吗?提前谢谢
PS:由于我还在开发,SSL证书不是有效的证书。我不确定这是否与这个错误有关
更新
在实现@Saca应答后,我现在遇到以下错误:
Microsoft.AspNetCore.Authorization.DefaultAuthorizationService:信息:用户的授权失败:(null)。
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker:信息:对筛选器“Microsoft.AspNetCore.Mvc.Authorization.authorizationFilter”处的请求的授权失败。
Microsoft.AspNetCore.Mvc.ChallengeResult:信息:使用身份验证方案()执行ChallengeResult。
Microsoft.AspNetCore.Authentication.JwtBearer.jwtbearermiddle软件:信息:AuthenticationScheme:Bearer受到质疑。经过一整个下午的尝试,解决方案如下: 在我的Startup.cs中,我在app.UseCors(CorsPolicy)之前设置了广告内容代码>
我只是切换了一下,现在一切正常。您能提供一个指向您所指的@Saca答案的链接吗?或者,如果他的答案被删除,请简要解释一下?我也有同样的问题…看来他删除了评论。不幸的是,我再也无法访问代码了。但我很乐意帮助你,在twitter@thdotnet上联系我