felipemenezesdm / auth-server-connect-laravel
此包的最新版本(v1.0.0)没有可用的许可证信息。
Laravel连接Auth Server的库
v1.0.0
2023-04-10 02:40 UTC
Requires
- php: ^8.1
- felipemenezesdm/laravel-secret-manager-suite: ^1.0
- guzzlehttp/guzzle: ^7.0
- illuminate/support: >=9.0
- ramsey/uuid: ^4.7
This package is auto-updated.
Last update: 2024-09-10 06:24:28 UTC
README
用于生成访问令牌或验证访问令牌的Auth Server集成的库。
主题
安装
运行以下命令以安装库
composer require felipemenezesdm/auth-server-connect-laravel:^1.0
在文件 app > app > Http > Kernel.php 中,设置以下值 \App\Http\Middleware\AuthServerConnect::class
protected $middlewareGroups = [ 'web' => [ // [...], \FelipeMenezesDM\AuthServerConnectLaravel\Middleware\AuthServerConnect::class, ], 'api' => [ // [...], \FelipeMenezesDM\AuthServerConnectLaravel\Middleware\AuthServerConnect::class, ], ];
生成令牌
基本配置
安装库后,可以在应用程序的控制器中使用#[AuthServerConnection]属性
#[AuthServerConnection] class MyController extends Controller { public static ?AuthServerToken $authServerToken; }
AUTH_SERVER_PROVIDER=environment AUTH_SERVER_URI=https://:1080/api/v1 client_id=9835e498-eb18-4d7a-8e8e-230b2190df1f client_secret=51469bf9-081f-4023-a391-b94877bb5b1b
需要注意的是,在控制器中需要创建一个AuthServerToken类型的静态属性,如上面的示例。它将是令牌的处理对象。
提供者
目前,该库提供了三种从Auth Server获取生成令牌凭证的方式:环境、aws和gcp。
环境
凭证可以通过系统中的环境变量来定义。
AUTH_SERVER_PROVIDER=environment AUTH_SERVER_URI=https://:1080/api/v1
export client_id=9835e498-eb18-4d7a-8e8e-230b2190df1f export client_secret=51469bf9-081f-4023-a391-b94877bb5b1b
AWS
凭证可以从亚马逊网络服务的Secrets中获取。
AUTH_SERVER_PROVIDER=aws AUTH_SERVER_URI=https://:1080/api/v1 AUTH_SERVER_SECRET_NAME=my-secret-name AUTH_SERVER_REGION=us-east-1
GCP
凭证可以从谷歌云平台的Secrets中获取。
AUTH_SERVER_PROVIDER=gcp AUTH_SERVER_URI=https://:1080/api/v1 AUTH_SERVER_SECRET_NAME=my-secret-name AUTH_SERVER_PROJECT_ID=gcp-project
验证令牌
要验证令牌,可以在路由方法或控制器本身上配置#[AuthServerValidation]属性。
使用以下构造,将为控制器的所有路由实现认证
#[AuthServerValidation(scopes: ['my-scope'])] class MyController extends Controller { #[Route(name: 'my-route', path: '/api/v1')] public function myRoute() : void { } }
使用以下构造,将只为单独定义的路由实现认证
class MyController extends Controller { #[AuthServerValidation(scopes: ['my-scope'])] #[Route(name: 'my-route', path: '/api/v1')] public function myRoute() : void { } }
使用以下构造,将为控制器的所有路由实现认证,但访问范围将被合并。在此示例中,所有路由都将有基本范围“my-scope”,但路由“/api/v1/{id}”将添加附加范围“my-scope-2”
#[AuthServerValidation(scopes: ['my-scope'])] class MyController extends Controller { #[AuthServerValidation(scopes: ['my-scope-2'])] #[Route(name: 'my-route', path: '/api/v1/{id}')] public function myRoute() : void { } #[Route(name: 'my-route2', path: '/api/v1')] public function myRoute2() : void { } }
请注意,参数scopes将用于确定传递给请求的令牌是否具有访问路由所需的(某些)范围。
配置属性
描述库中可用的所有配置属性。
- AUTH_SERVER_ENABLED
- 类型: boolean
- 描述: 定义是否启用或禁用验证。
- 必需: 是
- 默认值: true
- AUTH_SERVER_NAME
- 类型: string
- 描述: 连接器的标识名称。
- 必需: 否
- 默认值: null
- AUTH_SERVER_URI
- 类型: string
- 描述: Auth Server服务器的默认URL。
- 必需: 是
- AUTH_SERVER_REDIRECT_URI
- 类型: string
- 描述: 客户端重定向URL。
- 必需: 否
- 默认值: null
- AUTH_SERVER_SCOPES
- 类型: string
- 描述: 生成令牌的范围,以逗号分隔。例如:scope1,scope2,scope2
- 必需: 否
- 默认值: null
- AUTH_SERVER_TIMEOUT
- 类型: integer
- 描述: Auth Server服务器响应的时延限制,以毫秒为单位。
- 必需: 否
- 默认值 300
- AUTH_SERVER_PROVIDER
- 类型: string
- 描述: 凭证提供者的类型。目前可用:环境、aws和gcp。
- 必需: 是
- 默认值: environment
- AUTH_SERVER_PROJECT_ID
- 类型: string
- 描述: 仅适用于提供者gcp,用于标识获取凭证的项目。
- 必需:是,当提供商为 gcp 时
- AUTH_SERVER_REGION
- 类型: string
- 描述:仅适用于提供商 aws,用于标识客户端的默认区域。
- 必需:是,当提供商为 aws 时
- AUTH_SERVER_CLIENT_ID_KEY
- 类型: string
- 描述:定义在 secrets 负载或环境变量中客户端 ID 的密钥。在此情况下,此配置适用于提供商 aws、gcp 和 environment。例如,如果客户端 ID 密钥定义为 "my-client-id" 且提供商为 "environment",则需要创建一个名为 "my-client-id" 的环境变量来存储用于生成令牌的客户端 ID。
- 必需: 是
- 默认值:client_id
- AUTH_SERVER_CLIENT_SECRET_KEY
- 类型: string
- 描述:定义在 secrets 负载或环境变量中客户端 secret 的密钥。在此情况下,此配置适用于提供商 aws、gcp 和 environment。例如,如果客户端 secret 密钥定义为 "my-client-secret" 且提供商为 "environment",则需要创建一个名为 "my-client-secret" 的环境变量来存储用于生成令牌的客户端 secret。
- 必需: 是
- 默认值:client_secret
- AUTH_SERVER_END_POINT
- 类型: string
- 描述:当提供商等于 aws 时,此参数可以配置为定义获取凭证的端点。例如,当使用 LocalStack 时,这非常有用。
- 必需: 否
- AUTH_SERVER_SECRET_NAME
- 类型: string
- 描述:定义获取凭证的 secret 的名称。适用于提供商 aws 和 gcp。
- 必需:是,当提供商为 aws 或 gcp 时