加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – .Net核心Cookie身份验证在IIS中托管时不起作用

发布时间:2020-12-16 03:31:16 所属栏目:asp.Net 来源:网络整理
导读:当独立运行应用程序时(在我的情况下只运行在指定端口上运行的kestrel服务器:3001)我可以登录(创建一个auth cookie)并使用我的会话而没有问题,以便后续调用我的API控制器.但是,一旦我通过IIS将应用程序发布到主机,我可以毫无问题地登录,但是对我的API控制器
当独立运行应用程序时(在我的情况下只运行在指定端口上运行的kestrel服务器:3001)我可以登录(创建一个auth cookie)并使用我的会话而没有问题,以便后续调用我的API控制器.但是,一旦我通过IIS将应用程序发布到主机,我可以毫无问题地登录,但是对我的API控制器的所有后续请求都会失败授权并重定向到登录.

为了演示我的问题,我已将我的应用程序删除到可在此处找到的工作示例:Angular2AspNetCoreStarter

重现:

>克隆回购
>导航到项目目录cd Angular2AspNetCoreStarter
>安装依赖项dotnet restore& npm安装
>构建npm run build
>发布dotnet发布
>主机通过IIS Publishing to IIS
>导航到托管站点(在我的情况下,它是@ http:// localhost / ng2starter)
>使用任何用户名/密码登录
>开放式侧面导航
>单击发送匿名Ping(注意它有效!我使用Fiddler检查流量)
>单击发送Ping(注意401并重定向到登录)

我检查了日志,我在茶隼日志中发现的错误是:
CookieAuth未经过身份验证.失败消息:Unprotect票证失败
仅供参考’CookieAuth’是我在appsettings.json文件中定义的方案名称.

解决方法

我认为问题可能会遗留或重叠来自具有相同cookie名称的不同“localhost”应用程序的cookie.我在IIS中运行您的示例并从ping中获得相同的401错误,然后在chrome中注意到一堆localhost cookie具有相同的默认名称

.AspNetCore.CookieAuth

我清理了所有的饼干然后再次运行你的样品并找回了“PONG”

使用IISEXPRESS时创建的cookie
本地主机:PORT

当您使用localhost在IIS中运行时,也会出现问题,因此我猜测IISEXPRESS cookie正被发送到IIS实例,因为您有短暂的数据保护,所以它们无法解密.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读