对Identity Server Angular客户端进行故障排除

问题描述 投票:0回答:1

我有一个带有MVC和Angular客户端应用程序的IdentityServer4实现。两者在大多数情况下都能正常工作。但是,有时基于报告,Angular客户端应用程序会陷入某种重定向循环中。与此类似

https://www.scottbrady91.com/OpenID-Connect/Help-Im-Stuck-in-a-Redirect-Loop

客户端应用使用隐式流。错误发生时我不在场,并且无法出现,因为这是全局24/7操作。在Angular应用程序级别实现日志记录或进行一般故障排除的最佳方法是什么?

angular identityserver4 openid-connect
1个回答
0
投票

很好的问题,因为OAuth解决方案涉及多个端点,并且可靠性经常被低估。提供支持快速解决问题的弹性解决方案是一个挑战。

了解直接循环原因

以我的经验,这是最常见的原因:

  • [授权服务器在error / error_description字段中返回对登录重定向的错误响应-在这种情况下,正确的行为是Web UI可以清楚地报告错误并停止处理

  • 登录响应的Web UI处理失败,例如,当验证id令牌的JWKS签名时-Web UI再次应停止处理并清楚地报告错误

  • 提供了有效令牌后,API会向Web UI返回永久性401-在这种情况下,API可能配置不正确-401故障的详细信息需要记录-如果未找到/过期令牌/签名验证是否失败?

  • API返回错误的状态码-例如,对拒绝的资源的访问应作为403返回到Web UI,并且应将技术问题作为500返回]]

  • 存在cookie解密错误-在集群环境中很常见-听起来像与您的情况无关,因为您使用的是隐式流,并且Angular客户端没有cookie

  • 开发过程中的可靠性措施

[我总是鼓励我的团队在完成基础工作之后就这样工作(尽管我取得的成功有限-大声笑):

  • 至少测试几个失败方案
  • 查看重要行为的代码路径-例如API状态代码
  • 确保UI中良好的错误显示,以帮助快速解决问题
  • 向Web UI提供可靠的API错误响应,并记录失败原因
  • 要比较的解决方案>>

我的[This write up]可能会给您一些方法上的想法。步骤10和17处理模拟开发过程中的Web UI和API失败,并确保所需的行为。下面是一些相关代码:

© www.soinside.com 2019 - 2024. All rights reserved.