在javascript中测试oauth2隐式授权access_token的解析器

时间:2015-09-23 14:06:17

标签: javascript angularjs oauth-2.0

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

目前,我遇到了单元测试此解析函数的问题,该函数使用url并返回访问令牌对象。无法想出好方法,所以写在这里:

1。你如何处理单元测试(所以我不能直接请求工作oauth服务器)一个解析来自认证服务器的访问令牌的函数?

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

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

2 个答案:

答案 0 :(得分:2)

你可以突破“足够”OAuth,就像下面链接的服务一样。这将为您提供一个超级基本的OAuth提供程序,但它真正适用于“集成测试”方案(取决于您在这些方面绘制线条的位置)。

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

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

代替一个好的答案,这里有一个让你走出一个洞:)

答案 1 :(得分:1)

在接近我的oAuth身份验证服务的作者后,我已经了解了服务器在成功验证的情况下发送给我的数据。在我的情况下,oAuth服务器的响应具有以下形式:

  1. 标题 //已创建的编码算法
  2. 访问令牌 // base64编码对象
  3. 哈希 //使用标题中指定的算法完成的前3个项目。
  4. 它具有以下结构: header.access_token.hash

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

    由于我想要检查的令牌解析功能仅使用请求的 access_token部分,我已经更改了头部和哈希部分,并且还编码了其他用户名以便进行测试目的。

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