为了账号安全,请及时绑定邮箱和手机立即绑定

AspNet.Core、IdentityServer 4:

AspNet.Core、IdentityServer 4:

C#
Helenr 2021-07-06 16:56:32
我有两个 aspnet.core 服务。一种用于 IdentityServer 4,一种用于 Angular4+ 客户端使用的 API。SignalR 集线器在 API 上运行。整个解决方案在 docker 上运行,但这应该无关紧要(见下文)。我使用了完美无缺的隐式身份验证流程。NG 应用程序重定向到用户登录的 IdentityServer 的登录页面。之后,浏览器将使用访问令牌重定向回 NG 应用程序。然后使用令牌调用 API 并建立与 SignalR 的通信。我想我已经阅读了所有可用的内容(请参阅下面的来源)。由于 SignalR 使用不支持标头的 websocket,因此应在查询字符串中发送令牌。然后在 API 端,令牌被提取并设置为请求,就像它在标头中一样。然后验证令牌并授权用户。API 工作没有任何问题,用户获得授权,并且可以在 API 端检索声明。因此 IdentityServer 应该没有问题,因为 SignalR 不需要任何特殊配置。我对吗?当我不在 SignalR 集线器上使用 [Authorized] 属性时,握手成功。这就是为什么我认为我使用的 docker 基础设施和反向代理没有任何问题(代理设置为启用 websockets)。因此,未经授权 SignalR 可以工作。通过授权,NG 客户端在握手期间获得以下响应:Failed to load resource: the server responded with a status of 401Error: Failed to complete negotiation with the server: ErrorError: Failed to start the connection: Error请求是Request URL: https://publicapi.localhost/context/negotiate?signalr_token=eyJhbGciOiJSUz... (token is truncated for simplicity)Request Method: POSTStatus Code: 401 Remote Address: 127.0.0.1:443Referrer Policy: no-referrer-when-downgrade我得到的回应:access-control-allow-credentials: trueaccess-control-allow-origin: http://localhost:4200content-length: 0date: Fri, 01 Jun 2018 09:00:41 GMTserver: nginx/1.13.10status: 401vary: Originwww-authenticate: Bearer根据日志,令牌验证成功。我可以包含完整的日志,但我怀疑问题出在哪里。因此,我将在此处包含该部分:[09:00:41:0561 Debug] Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationHandler AuthenticationScheme: Identity.Application was not authenticated.[09:00:41:0564 Debug] Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationHandler AuthenticationScheme: Identity.Application was not authenticated.我在日志文件中得到了这些,但我不确定这意味着什么。我将代码部分包含在 API 中,我在其中获取和提取令牌以及身份验证配置。系统中没有其他错误、异常。我可以调试应用程序,一切似乎都很好。包含的日志行是什么意思?如何调试授权期间发生的事情?
查看完整描述

3 回答

  • 3 回答
  • 0 关注
  • 405 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信