adlogix / 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
README
此中间件的目的在于将Atlassian Connect认证作为Guzzle中间件实现。因此,你应该阅读Atlassian Connect文档,以了解在此库中使用的术语。
tl;dr;
- JWT: Json Web Token 标准,Atlassian版本,Atlassian JWT Web解码器(使用你的查询获取QSH,使用查询+JWT令牌查询参数来验证它)
- QSH: 查询字符串散列
- 描述符: Atlassian Connect插件描述符,将你的描述符与Atlassian产品进行验证(仅语法检查)
这是什么
如你所见,Atlassian有一个相当复杂的认证系统,即使是对于他们任何产品的读取访问。我们创建了此Guzzle中间件,以便我们可以在Atlassian产品上进行认证。
这不是什么
- 完整的Atlassian [name-your-product]客户端。
使用方法
请参阅此存储库根目录下的index.php。
实际测试
你想要认证的Atlassian产品需要通过某种形式的webhooks与你应用程序进行通信,因此我们创建了一个最基本的应用程序来展示你可以如何实现。
使用docker-compose
$ docker-compose up -d
使用主机名而不是端口号
如果你已经启动了环境,你已经有了一个正在运行的代理来将ngrok.dev和atlassian-connect.dev重定向到正确的容器。你只需要将这两个域名放入你的主机文件或使用类似dnsmasq在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 分钟的代理超时,这样我们就可以一行一行地操作而不会出现任何问题 ;)