eko/authz-sdk

Authz PHP SDK

v0.0.1 2023-01-14 15:17 UTC

This package is auto-updated.

Last update: 2024-09-07 08:19:58 UTC


README

这是 Authz 的 PHP 开发工具包。

安装

您可以通过添加以下依赖项将 SDK 安装到您的项目中:

$ composer require eko/authz-sdk

⚠️ 注意,您需要安装 grpc PHP 扩展

使用方法

您需要在代码中通过以下方式实例化一个新的 Authz 客户端:

<?php
use Eko\AuthzSdk\Client;

$client = new Client('localhost:8081', '<client_id>', '<client_secret>');

一旦客户端被实例化,您就可以访问所有的 gRPC 方法。

为了创建一个新的 Principal,您可以使用:

[$response, $status] = $client->PrincipalCreate(new PrincipalCreateRequest([
    'id' => 'user-123',
    'attributes' => [
        new Attribute(['key' => 'email', 'value' => 'johndoe@acme.tld']),
    ],
]))->wait();

声明一个新的资源

[$response, $status] = $client->ResourceCreate(new ResourceCreateRequest([
    'id' => 'post.123',
    'kind' => 'post',
    'value' => '123',
    'attributes' => [
        new Attribute(['key' => 'owner_email', 'value' => 'johndoe@acme.tld']),
    ],
]))->wait();

您也可以这样声明一个新的策略

[$response, $status] = $client->PolicyCreate(new PolicyCreateRequest([
    'id' => 'post-owners',
    'resources' => ['post.*'],
    'actions' => ['edit', 'delete'],
    'attribute_rules' => [
        'principal.email == resource.owner_email',
    ],
]))->wait();

然后,您可以执行以下检查:

if ($client->IsAllowed('user-123', 'post', '123', 'edit')) {
    // Do something
}

请注意,您可以通过以下方式访问所有在 proto 文件中声明的 gRPC 方法 此处

配置

此 SDK 通过 gRPC 连接到后端服务。以下是可用的配置选项