SignalR with .net core CookieAuthentication on Domain issue
SignalR with .net core CookieAuthentication on Domain issue
首先,我对signalR知之甚少。我正在努力学习,大部分时间我只是在闲逛。
运行 在 .NET Core 3.1 上。
我有2台机器:
- PC1 是我的开发桌面,带有我们域中的 Win10 Pro 和 IIS。
- PC2 运行宁 Ubuntu(不在域中)与域中的 Win10 虚拟机。
我已经从 Getting Started with SignalR.
创建了聊天应用程序
如果我在 PC1 上的 IIS 中托管它,一切正常。 SignalR 连接已建立,我可以从 PC1、PC2 Ubuntu、PC2 Win10 VM 甚至我的 phone 发送消息。网络上的任何设备都可以很好地连接到集线器,而无需进行身份验证。
如果我添加 Cookie 身份验证加载站点将重定向到登录页面,登录将成功,用户将被重定向回主索引页面。
但是,只有属于域的机器才能在登录后建立 SignalR 连接。这意味着 PC1 可以登录并建立 signalR 连接并发送消息。
PC2 ubuntu 可以登录,但在尝试建立 SignalR 连接时出现未授权错误。
PC2 ubuntu/Win10 VM(在域中)可以登录,但在尝试建立 SignalR 连接时出现未经授权的错误。
使用我的 phone 我得到同样的未授权错误。
如果属于域的工作同事在他的计算机上加载站点,他可以登录并建立有效的 SignalR 连接。
身份验证处于活动状态时,不属于域的任何设备都无法建立有效的 SignalR 连接。
任何不属于域的设备在登录后尝试建立与集线器的连接时都会收到未经授权的 401 错误。
属于该域的任何设备都可以登录并建立正常工作的 SignalR 连接。
代码似乎工作正常。我认为这是一个 IIS 问题。我的 IIS 设置基于此:
https://damienbod.com/2018/09/21/deploying-an-asp-net-core-application-to-windows-iis/
就代码而言,一切似乎都正常,运行 很好,但是当身份验证处于活动状态时,不属于域的设备无法建立 signalR 连接。
如果没有身份验证,网络上的任何设备都可以正常连接到集线器。
再一次,这只是我在胡闹,试图了解我能做什么,不能做什么,或者应该做什么,不应该做什么。是的,我做了很多 Google。
我的启动代码:
登录码:
集线器代码:
我让它工作了...发布它以防它可能对其他人有所帮助并让他们免于许多天无处可去 :)
事实证明 Windows 域没有发挥作用。如果我在应用程序中激活授权,网络上 devices/machines 的 None 可以通过网络建立信号器连接。只有 IIS 为 运行 的机器才能打开应用程序、登录并建立 signalR 连接并按预期工作。
昨天我刚好看了一个关于在 Win10 中将 .net 核心应用程序发布到 IIS 的视频,那个家伙在 IIS 下创建了一个新站点,而不是在随附的默认站点下创建一个新应用程序IIS 安装。
决定试一试,当托管在 IIS 的新站点下时,果然应用程序开始运行。
我不知道默认站点是否存在设置问题...我是唯一使用此 IIS 安装的人,而且我知道我没有更改任何默认网站设置。 win10 安装也只有大约 6 个月大。
我想在我们工作的 Win10 笔记本电脑上全新安装 IIS 进行测试,看看是否会出现同样的问题...我对此表示怀疑,但无论如何都值得检查。
首先,我对signalR知之甚少。我正在努力学习,大部分时间我只是在闲逛。
运行 在 .NET Core 3.1 上。
我有2台机器:
- PC1 是我的开发桌面,带有我们域中的 Win10 Pro 和 IIS。
- PC2 运行宁 Ubuntu(不在域中)与域中的 Win10 虚拟机。
我已经从 Getting Started with SignalR.
创建了聊天应用程序如果我在 PC1 上的 IIS 中托管它,一切正常。 SignalR 连接已建立,我可以从 PC1、PC2 Ubuntu、PC2 Win10 VM 甚至我的 phone 发送消息。网络上的任何设备都可以很好地连接到集线器,而无需进行身份验证。
如果我添加 Cookie 身份验证加载站点将重定向到登录页面,登录将成功,用户将被重定向回主索引页面。
但是,只有属于域的机器才能在登录后建立 SignalR 连接。这意味着 PC1 可以登录并建立 signalR 连接并发送消息。
PC2 ubuntu 可以登录,但在尝试建立 SignalR 连接时出现未授权错误。
PC2 ubuntu/Win10 VM(在域中)可以登录,但在尝试建立 SignalR 连接时出现未经授权的错误。
使用我的 phone 我得到同样的未授权错误。
如果属于域的工作同事在他的计算机上加载站点,他可以登录并建立有效的 SignalR 连接。
身份验证处于活动状态时,不属于域的任何设备都无法建立有效的 SignalR 连接。
任何不属于域的设备在登录后尝试建立与集线器的连接时都会收到未经授权的 401 错误。
属于该域的任何设备都可以登录并建立正常工作的 SignalR 连接。
代码似乎工作正常。我认为这是一个 IIS 问题。我的 IIS 设置基于此: https://damienbod.com/2018/09/21/deploying-an-asp-net-core-application-to-windows-iis/
就代码而言,一切似乎都正常,运行 很好,但是当身份验证处于活动状态时,不属于域的设备无法建立 signalR 连接。
如果没有身份验证,网络上的任何设备都可以正常连接到集线器。
再一次,这只是我在胡闹,试图了解我能做什么,不能做什么,或者应该做什么,不应该做什么。是的,我做了很多 Google。
我的启动代码:
登录码:
集线器代码:
我让它工作了...发布它以防它可能对其他人有所帮助并让他们免于许多天无处可去 :)
事实证明 Windows 域没有发挥作用。如果我在应用程序中激活授权,网络上 devices/machines 的 None 可以通过网络建立信号器连接。只有 IIS 为 运行 的机器才能打开应用程序、登录并建立 signalR 连接并按预期工作。
昨天我刚好看了一个关于在 Win10 中将 .net 核心应用程序发布到 IIS 的视频,那个家伙在 IIS 下创建了一个新站点,而不是在随附的默认站点下创建一个新应用程序IIS 安装。
决定试一试,当托管在 IIS 的新站点下时,果然应用程序开始运行。
我不知道默认站点是否存在设置问题...我是唯一使用此 IIS 安装的人,而且我知道我没有更改任何默认网站设置。 win10 安装也只有大约 6 个月大。
我想在我们工作的 Win10 笔记本电脑上全新安装 IIS 进行测试,看看是否会出现同样的问题...我对此表示怀疑,但无论如何都值得检查。