matthiasrousseau / guzzle-atlassian-connect-middleware
为 Guzzle 定制的 Atlassian Connect 身份验证中间件
Requires
- php: >=5.6.0
- firebase/php-jwt: ^3.0 || ^4.0
Requires (Dev)
- guzzlehttp/guzzle: ^6.2
- phpunit/phpunit: ^5.6
- silex/silex: ^2.0
- twig/twig: ^1.26
Suggests
- guzzlehttp/guzzle: For using this library as it was created for Guzzle6. But you should be able to use it with any PSR-7 HTTP Client
This package is auto-updated.
Last update: 2024-09-30 01:41:45 UTC
README
此中间件的目的在于将 Atlassian Connect 身份验证实现为 Guzzle 中间件。因此,您应该阅读 Atlassian Connect 文档 来理解此库中使用的术语。
简要说明:
- JWT:Json Web Token 标准,Atlassian 版本,Atlassian JWT Web 解码器(使用您的查询来获取 QSH,使用查询 + JWT 令牌查询参数来验证它)
- QSH: 查询字符串哈希
- 描述符: Atlassian Connect 扩展描述符,验证您的描述符是否与 Atlassian 产品兼容(仅语法检查)
这是什么
如您所见,Atlassian 的身份验证系统相当复杂,即使是仅对他们的任何产品进行读取访问也是如此。我们创建了这个 Guzzle 中间件,以便帮助我们在一个 Atlassian 产品上进行身份验证。
这并不是什么
- 一个完整的 Atlassian [name-your-product] 客户端。
使用方法
请参阅此存储库根目录下的 index.php。
实际测试
您想要认证的 Atlassian 产品需要使用某种形式的 webhook 来与您的应用程序进行通信,因此我们创建了最基本的应用程序来展示如何实现。
使用 docker-compose
$ docker-compose up -d
使用主机名而不是端口
如果您已经启动了环境,您已经有了一个正在运行的代理来将 ngrok.dev 和 atlassian-connect.dev 重定向到正确的容器。您只需将这两个域名放入您的 hosts 文件或使用类似 dnsmasq on OSX 的解决方案,但请确保将其重定向到您的 docker-machine IP。
要查找您的 docker machine ip,请使用
$ docker-machine ip [machine-name]
获取您的开发实例
Atlassian 更改了在 Confluence/Jira 上工作的方式,现在要创建插件,您必须获取一个 开发者账户 并创建自己的实例。创建环境的所有步骤都在 文档页面 上定义。
一旦您有权访问自己的 Atlassian Cloud 实例并将其置于开发者模式,我们就可以继续并让实例与我们联系。
将我们的本地应用程序暴露给世界
我们尝试认证的 Atlassian 应用必须向我们发送一些信息,因此我们需要将我们的应用程序暴露在互联网上。这就是为什么我们有一个运行 ngrok 容器的原因。ngrok 是一个应用程序,它将在我们的环境和他们的服务器之间创建隧道,使我们能够从任何地方访问。
现在你应该有一个运行在 ngrok.dev 的 ngrok 容器。连接后,你应该能看到隧道 URL,如果你打开它,还能看到所有隧道流量。
安装我们演示应用程序的 URL 是 https://[your-tunnel-id].eu.ngrok.io/descriptor.json
注意:每次重启 ngrok 容器时,隧道 ID 都会改变,所以每次你都应该重新安装你的插件。我知道,这很糟糕。
代理超时
我们已经设置了 10 分钟的代理超时,这样我们就可以一行一行地操作,不会出现问题;)