mvc web api身份验证令牌cors问题

Posted

技术标签:

【中文标题】mvc web api身份验证令牌cors问题【英文标题】:mvc web api authentication token cors problem 【发布时间】:2019-09-04 11:12:00 【问题描述】:

早安,

我正在使用 asp.net api 和 Angular。

当我尝试从我的 api 获取身份验证令牌时,我收到错误

我有一个控制器,它为我的应用程序返回一个身份验证令牌。这是控制器的逻辑

        [HttpPost]
    [Route("authenticate")]
    public async System.Threading.Tasks.Task<IHttpActionResult> AuthenticateAsync(LoginRequest login)
    
        if (login == null)
            throw new HttpResponseException(HttpStatusCode.BadRequest);

        var result = await SignInManager.PasswordSignInAsync(login.Username, login.Password, false, shouldLockout: false);
       var strCurrentUserId = User.Identity.GetUserId();
        switch (result)
        
            case SignInStatus.Success:
                
                    LoginAprovado loginAprovado = new LoginAprovado
                    
                        Token = TokenGenerator.GenerateTokenJwt(DateTime.Now.ToString() + login.Username + Guid.NewGuid()),
                        UserId = User.Identity.GetUserId()
                    ;                       
                    return Ok(loginAprovado);
                                  
            default:
                
                    return Unauthorized();
                
        
    

如您所见,我正在返回对象 LoginAprovado。

我不知道如何解决这个问题,似乎是一个cors问题。

这是我的网络配置

  <appSettings>

<add key="JWT_AUDIENCE_TOKEN" value="http://mysite.azurewebsites.net/" />
<add key="JWT_ISSUER_TOKEN" value="http://mysite.azurewebsites.net/" />
...more here
  <system.webServer>
<httpProtocol>
        <customHeaders>
            <add name="Access-Control-Allow-Origin" value="*" />
            <add name="Access-Control-Allow-Methods" value="GET,PUT,POST,DELETE,OPTIONS" />
    <add name="Access-Control-Allow-Headers" value="Origin, X-Requested-With, Content-Type, Accept" />
        </customHeaders>
    </httpProtocol>

请注意,在我的 customeheaders 部分中,access-control-allow-origin 设置为 *,因此我可以在本地调试我的前端。

我可以做些什么来解决这个问题?谢谢

【问题讨论】:

【参考方案1】:

根据我的经验,对我有用的是将以下行添加到 Startup 类中 Configuration(IAppBuilder app) 方法的第一行(如果您使用的是 OWIN):

app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);

【讨论】:

您好,感谢您的回复,我有一个问题,此代码如何影响应用程序的安全性?我的想法是,对于生产,人们可以从 mywebsite.com 访问我的 api 此问题与原帖无关,请为此创建一个新帖。但是,此链接可能会对您有所帮助。 谢谢,顺便说一句,我看不到链接。谢谢 对不起,***.com/questions/24680302/…

以上是关于mvc web api身份验证令牌cors问题的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET MVC Web API 身份验证令牌安全问题

使用 asp.net web api 令牌在 mvc 网站上进行身份验证

Web API 2.1 Windows 身份验证 CORS Firefox

NET Core 3.1 MVC 授权/身份验证,带有在单独的 Net Core 3.1 Web Api 中从外部获取的令牌 (JWT)

.NET Web API 2 OWIN 持有者令牌身份验证

即使在添加身份验证令牌以获取艺术家的播放列表后,Spotify API 也会出现 CORS 错误