tegaphilip/padlock

Padlock,一个Phalcon身份验证服务器,为Phalcon应用程序提供OAuth2支持

v1.0.0 2018-08-01 20:32 UTC

README

Latest Version on Packagist Software License Total Downloads

Padlock是一个基于Docker的Phalcon身份验证服务器,它建立在PHP OAuth 2.0 服务器之上。

设置

  • 在您的/etc/hosts文件中添加条目padlock.localpadlock-test.local,并将其映射到127.0.0.1

  • 确保您已安装docker。

  • app/env/目录中的.env.sample复制到.env,并替换其中的值。

  • 您可以通过在命令行中运行以下命令来生成ENCRYPTION_KEY环境变量:php -r "echo base64_encode(random_bytes(40)) . PHP_EOL;"

  • 进入keys目录,并按如下方式生成您的公钥和私钥:openssl genrsa -out private.key 2048然后openssl rsa -in private.key -pubout -out public.key。这些密钥用于加密和解密令牌。

  • 您需要将上一步骤中创建的私钥和公钥的权限更改为以下权限:chgrp www-data -R keys然后chmod 600 keys/private.key

  • 如果您已经在端口8899(Phalcon应用程序)和33066(MySQL服务器)上运行了服务,请随时更改docker-compose.yml中的端口映射。

  • 运行应用程序的方法如下:./bin/start.sh或运行docker-compose up -d

  • 使用凭证主机:127.0.0.1、用户名:root、密码:root、端口:33066登录mysql。

  • 创建两个数据库:padlock_dbpadlock_test_db,并将位于app/db/padlock.sql中的sql文件导入到这两个数据库中。

试试看

请求令牌

  1. 密码授权流程:向http://padlock.local:8899/api/v1/oauth/token发送一个带有以下参数的POST请求

    • client_id: test
    • client_secret: secret
    • grant_type: password
    • username: abc
    • password: abc

    注意:此授权返回访问令牌和刷新令牌

  2. 客户端凭证授权流程:向http://padlock.local:8899/api/v1/oauth/token发送一个带有以下参数的POST请求

    • client_id: test
    • client_secret: secret
    • grant_type: client_credentials

    注意:此授权仅返回访问令牌

  3. 刷新令牌授权:向http://padlock.local:8899/api/v1/oauth/token发送一个带有以下参数的POST请求

    • client_id: test
    • client_secret: secret
    • grant_type: refresh_token
    • refresh_token: 从任何返回刷新令牌的流程中获得的值(例如,密码授权流程)

    注意:此授权返回另一个访问令牌和刷新令牌,并使之前的有效令牌失效或撤销

  4. 隐式授权:向http://padlock.local:8899/api/v1/oauth/authorize发送一个带有以下参数的GET请求

    • client_id: test
    • response_type: token
    • state: 一个随机字符串(可选)
    • redirect_uri: http://www.test.com(可选)

    注意:此授权立即返回访问令牌。它不返回刷新令牌。

  5. 授权代码授权:向http://padlock.local:8899/api/v1/oauth/authorize发送一个带有以下参数的GET请求

    • client_id: test
    • response_type: code
    • state: 一个随机字符串(可选)
    • redirect_uri: http://www.test.com(可选)

    注意:此授权返回一个授权代码,然后使用该代码通过向http://padlock.local:8899/api/v1/oauth/token端点发送一个带有以下参数的POST请求来请求令牌

    • client_id: test
    • client_secret: secret
    • grant_type: authorization_code
    • code: 从GET请求中获得的值
    • redirect_uri: http://www.test.com(可选)

验证令牌

http://padlock.local:8899/api/v1/oauth/token/validate发送一个带有Authorization头的POST请求,其值为Bearer {access_token}

运行测试

  • app/env/目录中的.env.sample复制到.env.test,并替换其中的值。

  • 使用 ./bin/login.sh 或运行 docker exec -it padlock_app bash 登录到应用容器

  • 执行单元测试 ./unit-test.sh (使用 PHPUnit

  • 使用 ./integration-test.sh 运行集成测试 (使用 Codeception

安装

通过 Composer

$ composer require tegaphilip/padlock

变更日志

有关最近更改的详细信息,请参阅 CHANGELOG

贡献

请参阅 CONTRIBUTINGCONDUCT 以获取详细信息。

鸣谢