tegaphilip / padlock
Padlock,一个Phalcon身份验证服务器,为Phalcon应用程序提供OAuth2支持
Requires
- guzzlehttp/psr7: ^1.4
- league/oauth2-server: ^7.2
- nesbot/carbon: ^1.32
- vlucas/phpdotenv: ^2.4
Requires (Dev)
- codeception/codeception: 2.3.9
- flow/jsonpath: ^0.4.0
- mockery/mockery: ^1.1
- phpunit/phpunit: ^6.5
This package is auto-updated.
Last update: 2024-09-21 23:09:25 UTC
README
Padlock是一个基于Docker的Phalcon身份验证服务器,它建立在PHP OAuth 2.0 服务器之上。
设置
-
在您的
/etc/hosts
文件中添加条目padlock.local
和padlock-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_db
和padlock_test_db
,并将位于app/db/padlock.sql
中的sql文件导入到这两个数据库中。
试试看
请求令牌
-
密码授权流程:向
http://padlock.local:8899/api/v1/oauth/token
发送一个带有以下参数的POST
请求- client_id: test
- client_secret: secret
- grant_type: password
- username: abc
- password: abc
注意:此授权返回访问令牌和刷新令牌
-
客户端凭证授权流程:向
http://padlock.local:8899/api/v1/oauth/token
发送一个带有以下参数的POST
请求- client_id: test
- client_secret: secret
- grant_type: client_credentials
注意:此授权仅返回访问令牌
-
刷新令牌授权:向
http://padlock.local:8899/api/v1/oauth/token
发送一个带有以下参数的POST
请求- client_id: test
- client_secret: secret
- grant_type: refresh_token
- refresh_token: 从任何返回刷新令牌的流程中获得的值(例如,密码授权流程)
注意:此授权返回另一个访问令牌和刷新令牌,并使之前的有效令牌失效或撤销
-
隐式授权:向
http://padlock.local:8899/api/v1/oauth/authorize
发送一个带有以下参数的GET
请求- client_id: test
- response_type: token
- state: 一个随机字符串(可选)
- redirect_uri: http://www.test.com(可选)
注意:此授权立即返回访问令牌。它不返回刷新令牌。
-
授权代码授权:向
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
贡献
请参阅 CONTRIBUTING 和 CONDUCT 以获取详细信息。