【问题标题】:Testing parser for oauth2 implicit grant access_token in javascript在 javascript 中测试 oauth2 隐式授予 access_token 的解析器
【发布时间】:2015-12-20 21:43:32
【问题描述】:

我正在编写使用隐式授权 oauth 策略的 Angular 应用程序。如果我的 cookie 中没有有效的访问令牌,我将被重定向到身份验证服务器的 Web 界面,输入我的凭据并使用 url 中的访问令牌重定向到我的站点。我的系统对其进行解析并写入 cookie。

目前我面临的问题是对这个解析函数进行单元测试,该解析函数使用 url 并返回访问令牌对象。想不出好办法,就写到这里:

1.您如何处理单元测试(因此我无法直接向工作的 oauth 服务器发出请求)解析来自身份验证服务器的访问令牌的功能?

2。如何使用访问令牌构建 url 参数?如果我复制当前的访问令牌并在测试数据中使用它会安全吗?

3.是否有可以帮助创建模拟访问令牌对象的库?

【问题讨论】:

    标签: javascript angularjs oauth-2.0


    【解决方案1】:

    您可以突破“刚刚好”的 OAuth,例如下面链接的服务。这将为您提供一个超级基本的 OAuth 提供程序,但确实适用于“集成测试”场景(取决于您在这些事情上划线的位置)。

    如果您想成为一个单元测试的纯粹主义者/狂热者,那么您可以将其分叉到您应用的单元测试代码中。

    https://github.com/zalando-stups/mocks/tree/master/oauth2-provider

    代替一个很好的答案,这是一个让你摆脱困境的答案:)

    【讨论】:

    • 这很有趣!但我希望有一个生成访问令牌对象的库,而不是模拟整个 oAuth 服务。这应该是可能的,对吧?
    【解决方案2】:

    在与我的 oAuth 身份验证服务的作者联系后,我深入了解了在身份验证成功的情况下服务器向我发送的数据。就我而言,来自 oAuth 服务器的响应具有以下形式:

    1. header // has 创建的编码算法
    2. 访问令牌 // base64 编码对象
    3. hash // 使用标题中指定的算法完成的前 3 个项目。

    它的结构如下:header.access_token.hash

    我对安全漏洞的担心是担心将正确的数据(我可以从浏览器获取)放入测试文件中。但事实证明,如果没有正确的哈希,令牌将无效。令牌数据的哈希是在服务器端使用私钥完成的,所以如果我更改哈希,令牌就会过时。

    由于我想检查的令牌解析函数仅使用请求的 access_token 部分,因此我更改了标头和哈希部分,并且还对其他用户名进行了编码以进行测试目的。

    所以这是我当前问题的解决方案。希望这会对某人有所帮助。

    【讨论】:

      猜你喜欢
      • 2019-12-31
      • 2020-05-12
      • 2017-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-26
      相关资源
      最近更新 更多