felipemenezesdm/auth-server-connect-laravel

此包的最新版本(v1.0.0)没有可用的许可证信息。

Laravel连接Auth Server的库

v1.0.0 2023-04-10 02:40 UTC

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获取生成令牌凭证的方式:环境awsgcp

环境

凭证可以通过系统中的环境变量来定义。

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
    • 描述: 凭证提供者的类型。目前可用:环境awsgcp
    • 必需:
    • 默认值: environment
  • AUTH_SERVER_PROJECT_ID
    • 类型: string
    • 描述: 仅适用于提供者gcp,用于标识获取凭证的项目。
    • 必需:是,当提供商为 gcp
  • AUTH_SERVER_REGION
    • 类型: string
    • 描述:仅适用于提供商 aws,用于标识客户端的默认区域。
    • 必需:是,当提供商为 aws
  • AUTH_SERVER_CLIENT_ID_KEY
    • 类型: string
    • 描述:定义在 secrets 负载或环境变量中客户端 ID 的密钥。在此情况下,此配置适用于提供商 awsgcpenvironment。例如,如果客户端 ID 密钥定义为 "my-client-id" 且提供商为 "environment",则需要创建一个名为 "my-client-id" 的环境变量来存储用于生成令牌的客户端 ID。
    • 必需:
    • 默认值:client_id
  • AUTH_SERVER_CLIENT_SECRET_KEY
    • 类型: string
    • 描述:定义在 secrets 负载或环境变量中客户端 secret 的密钥。在此情况下,此配置适用于提供商 awsgcpenvironment。例如,如果客户端 secret 密钥定义为 "my-client-secret" 且提供商为 "environment",则需要创建一个名为 "my-client-secret" 的环境变量来存储用于生成令牌的客户端 secret。
    • 必需:
    • 默认值:client_secret
  • AUTH_SERVER_END_POINT
    • 类型: string
    • 描述:当提供商等于 aws 时,此参数可以配置为定义获取凭证的端点。例如,当使用 LocalStack 时,这非常有用。
    • 必需:
  • AUTH_SERVER_SECRET_NAME
    • 类型: string
    • 描述:定义获取凭证的 secret 的名称。适用于提供商 awsgcp
    • 必需:是,当提供商为 awsgcp