【问题标题】:Troubleshooting Identity Server Angular clientsIdentity Server Angular 客户端故障排除
【发布时间】:2020-10-06 09:16:27
【问题描述】:

我有一个带有 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】:

    问得好,因为 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 故障并确保所需的行为。相关代码如下:

    【讨论】:

    • 这很有趣。一个很好的回应,还有很多值得去的地方。谢谢你!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-06
    • 2013-09-03
    • 2013-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多