agrodata/cognito-guard

用于由 Amazon AWS Cognito 签发的 JSON Web Tokens 的 Laravel 身份验证保护器

1.13 2024-07-24 13:52 UTC

This package is auto-updated.

Last update: 2024-09-01 20:51:35 UTC


README

用于使用 Amazon Cognito 进行 JWT 身份验证和 Amazon Verified Permissions 进行权限管理的库。

安装

通过 composer 安装包

composer require agrodata/cognito-guard

发布迁移文件 add_cognito_uuid_to_users_table.php.stub,配置文件 config/cognito.phpconfig/verified-permission.php

 php artisan vendor:publish --provider="Agrodata\CognitoGuard\CognitoServiceProvider"

执行命令以创建新的迁移。这将向 "users" 表添加 [cognito_uuid] 字段

php artisan migrate

在 .env 中添加 Cognito 用户池的环境变量

AWS_COGNITO_REGION=us-east-2
AWS_COGNITO_USER_POOL_ID=us-east-2_PxDu3D4G4

对于使用 Verified Permissions 的权限管理,需要添加以下变量

AVP_REGION=
AVP_NAMESPACE=
AVP_POLICY_STORE_ID=

您还需要修改项目中的 [config/auth.php] 文件中的 "auth" 驱动程序;

// config/auth.php
'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],
    'api' => [
        'driver' => 'cognito', // aqui!!!!
        'provider' => 'users',
    ],
],

最后,根据您配置的 Cognito 用户池所需属性,您可能还需要调整 published config/cognito.php 文件中的单点登录设置

// config/cognito.php

'leeway' => 0, 
'input_key' => null,
'append_decoded_token' => false,
'load_user_from_database' => true,
'user_provider_custom_retrieve_method' => null

Verified Permission

Amazon Verified Permission 必须集成到项目中使用的 Cognito 用户池。将有两个中间件来验证 verifiedPermission 的权限

中间件

can

将查询分配给 Cognito 的 "组" 的所有 verifiedPermission 权限

  • CognitoUser->Group->VerifiedPermission

所有 权限都将被检索并添加到本地应用程序的缓存中。

后续的所有查询都将查询缓存中的列表。

如果向组分配了新的权限,则用户需要重新登录以重新注册缓存中的新权限。

Route::middleware('can:admin.user:read')

permission

每个权限将单独在 VerifiedPermission API 中进行验证。

这种方法比前一种方法稍微低效一些,并且会在 AWS(因为 VerifiedPermission 向其 API 中的查询收费)中更昂贵。

这种方法的优点是权限总是实时验证,无需在 Cognito 中重新登录。

Route::middleware('permission:admin.user:read')