【问题标题】:Ngx-auth without refresh-token没有刷新令牌的 Ngx-auth
【发布时间】:2019-03-29 09:08:50
【问题描述】:

我的任务是进行身份验证。他们想要使用 ngx-auth——首先,他们想要实现文档中说的 2 个令牌:访问和刷新。但现在他们只想用 1 个令牌来做。我的问题是: 1)是否值得并且可以在没有刷新令牌的情况下使用该软件包?我认为该软件包主要基于该刷新令牌。 2)如何查看token过期?是像基本 jwt 中的exp 参数吗?我应该多久检查一次令牌有效性 - 在每个请求上,或者我应该例如每 15 分钟一次?

【问题讨论】:

    标签: angular authentication authorization jwt access-token


    【解决方案1】:

    你可以使用这个库。要忽略 RefreshToken,只需重写正确的方法即可。

    检查有效性解码令牌(base64)并检查exp属性以了解是否已过期。您应该在通过HTTP_INTERCEPTOR 提出每个请求之前执行此操作。如果令牌过期,则请求新令牌并重播原始查询。

    更大的问题是如果您不想使用过期令牌,如何重新生成过期令牌?您不能在客户端存储用户名和密码。后端需要提供一些端点,允许通过传递过期的令牌来重新生成令牌。

    令牌不应长期有效。如果您的客户不想要刷新令牌,也许?想要使令牌对例如有效。 24h 然后考虑将客户端 IP 地址放入令牌中,并在每次传入请求时对其进行验证。这不是常见的方法,但对不遵循标准的“硬”客户(如额外的安全机制)有好处。

    @编辑

    我检查了 ngx-auth 源代码,刷新令牌的方法有点不同。如果后端返回 401 Unauthorized 给客户端时此库刷新令牌,则作者。在这种情况下,您不必验证 exp 属性。只需拦截所有传入的响应,如果状态为 401,则意味着我们必须刷新令牌。

    这个库中的令牌服务只是没有逻辑的抽象接口。 您必须扩展 AuthService 类并为特定方法提供您自己的实现。

    请检查 ngx-auth-example 存储库https://github.com/serhiisol/ngx-auth-example/blob/master/src/app/shared/authentication/authentication.service.ts

    这里你有这个库的简单实现。

    您不想使用刷新令牌。在这种情况下,覆盖 refreshToken 方法并找到任何其他方式来处理重新授权。

    【讨论】:

    • 所以库不提供用例来处理过期令牌?如果库提供并且 ngx-auth 必须提供,我不想自己检查过期时间,所以我想知道如何在没有刷新令牌的情况下执行此操作。
    • 库不支持解码令牌以检查exp 属性。当后端返回 401 时,而不是这个库刷新令牌。我更新了我的帖子。
    猜你喜欢
    • 2020-12-05
    • 1970-01-01
    • 2018-07-18
    • 2019-12-01
    • 2022-12-03
    • 2020-02-27
    • 1970-01-01
    • 2022-07-15
    • 2013-08-30
    相关资源
    最近更新 更多