一起使用承载令牌和cookie身份验证

 lzmhezy198344 发布于 2023-02-06 11:40

我有一个单页应用程序 - 或多或少基于MVC5 SPA模板 - 使用承载令牌进行身份验证.

该网站还有一些传统的MVC页面需要保护,但使用cookie身份验证.

在Startup.Auth中,我可以启用两种类型的授权:

app.UseCookieAuthentication(new CookieAuthenticationOptions());
app.UseOAuthBearerTokens(OAuthOptions);

但是,这似乎有副作用,因为无论何时从SPA发送AJAX请求,它都会在标头 cookie中发送承载令牌.

我真正想要的行为是,只有持有者令牌用于WebAPI调用,而只有用于MVC调用的cookie.

我还希望MVC调用在未经授权时重定向到登录页面(设置为CookieAuthenticationOption),但显然我不希望在进行API调用时发生这种情况.

有没有办法在一个应用程序中进行这种类型的混合模式身份验证?也许通过路径/路由过滤器?

1 个回答
  • 我想我是这样做的: -

    Startup.Auth正在连接OWIN管道,因此在那里包含Cookies和令牌是正确的.但是对cookie选项的一个更改指定了它应该应用于的身份验证类型:

    CookieOptions = new CookieAuthenticationOptions
    {
      AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie   
    };
    

    然后我需要将WebAPI配置为仅使用令牌:

    public static void Configure(HttpConfiguration config)
    {
       // Configure Web API to use only bearer token authentication.
       config.SuppressDefaultHostAuthentication();
       config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));
    }
    

    这似乎实现了我想要的.WebAPI只使用承载令牌而不使用cookie,一些常规MVC页面在登录后使用cookie(使用AuthenticationManager).

    2023-02-06 11:43 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有