Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/eko/authz-nodejs-sdk
Authz NodeJS SDK
https://github.com/eko/authz-nodejs-sdk
abac authorization nodejs permissions rbac
Last synced: 23 days ago
JSON representation
Authz NodeJS SDK
- Host: GitHub
- URL: https://github.com/eko/authz-nodejs-sdk
- Owner: eko
- License: mit
- Created: 2023-01-24T21:48:59.000Z (almost 2 years ago)
- Default Branch: master
- Last Pushed: 2023-02-05T08:41:30.000Z (almost 2 years ago)
- Last Synced: 2024-10-29T09:10:25.453Z (2 months ago)
- Topics: abac, authorization, nodejs, permissions, rbac
- Language: TypeScript
- Homepage: https://authz.fr
- Size: 39.1 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Authz NodeJS SDK
This is the Authz development kit for NodeJS.
## Installation
You can install the SDK in your project by adding the following dependency:
```bash
$ npm install @eko/authz-sdk
```## Usage
You have to instanciate a new Authz Client in your code by doing:
```js
import { Client } from '@eko/authz-sdk';const client = new Client('localhost:8081', '', '');
```Once the client is instanciate, you have access to all the gRPC methods.
In order to create a new Principal, you can use
```js
const response = await client.stub.principalCreate({
id: 'user-123',
attributes: [
{key: 'email', value: '[email protected]'},
],
});console.log('Principal created', response.principal?.id);
```To declare a new resource:
```js
const response = await client.stub.resourceCreate({
id: 'post.123',
kind: 'post',
value: '123',
attributes: [
{key: 'owner_email', value: '[email protected]'},
],
});console.log('Resource created', response.resource?.id);
```You can also declare a new policy this way:
```js
const response = client.stub.policyCreate({
id: 'post-owners',
resources: ['post.*'],
actions: ['edit', 'delete'],
attributeRules: [
'principal.email == resource.owner_email',
],
});console.log('Policy created', response.policy?.id);
```Then, you can perform a check with:
```js
const isAllowed = await client.isAllowed({
principal: 'user-123',
resourceKind: 'post',
resourceValue: '123',
action: 'edit',
});
```Please note that you have access to all the gRPC methods [declared here](https://github.com/eko/authz/blob/master/backend/api/proto/api.proto) in the proto file.
## Configuration
This SDK connects over gRPC to the backend service. Here are the available configuration options:
| Property | Description |
| -------- | ----------- |
| Address | Authz backend to connect to |
| ClientID | Your service account client id used to authenticate |
| ClientSecret | Your service account client secret key used to authenticate |