Gra*_*ham 18 acceptance-testing openid-connect e2e-testing oauth2
我正在研究一个我们计划首先执行API的新项目,以便我们可以在其上实现Web和本机应用程序,并允许第三方集成.到目前为止所有相当标准.
我们还希望为API提供一整套自动化测试,以确保其无回归地工作,并确保其满足要求.同样,相当标准,但因为我们正在测试API,我们将使用代码内HTTP客户端而不是Web浏览器.
我们一直在寻找oauth2/OpenID Connect来促进API的身份验证和授权 - 基本上,客户端可以进行身份验证,获取访问令牌,然后使用它来访问所有API资源.
我正在努力解决的问题是让自动化测试与oauth2部分协同工作以实现调用API的好方法.第一个想法是使用"client_credentials"或"密码"授权类型,它们似乎都适用于我们想要的东西,但它们根本没有涵盖在OpenID Connect规范中,当然还有"密码" "无论如何,至少它通常不被认为是个好主意.
这是实现这一目标的最佳方式,还是有其他最佳实践可用于其他流程,但没有Web浏览器?
编辑:在(更多)阅读之后,我有了一个新的计划.完全脱机运行测试,使用针对单独数据库的单独部署,并在测试运行之前将数据直接播种到数据库中,然后使用标准OpenID Connect流,但使用:
然后,系统可以检测到这种事实组合,并自动验证提供的用户名,而无需通过浏览器.
这看起来合情合理吗?或者,还有更好的方法?
既然您正在寻找测试API,那么access_token通过浏览器或通过其他方式获取API无关紧要.所以有(至少)两种解决方案:
另一种方式可能是client_credentials补助金.您必须使Authorization Server返回access_token类似于access_token通过浏览器在OpenID Connect流中为用户返回的内容,但取决于您应该可行的AS实现.
使用普通的ID连接器流动而产生的引导你的客户refresh_token的旁边access_token,并标记都与你的测试客户端与存储在一起client_id,并client_secret在配置时间.然后,您的测试客户端可以访问API直到access token过期,然后access_token通过refresh_token授权类型获得新的(利用client_id和client_secret).
OpenID Connect本身,用户身份验证以及id_token与您access_token唯一关心的API无关.
| 归档时间: |
|
| 查看次数: |
3008 次 |
| 最近记录: |