1.18.138 • Published 10 months ago

@arcblock/jwt v1.18.138

Weekly downloads
-
License
Apache-2.0
Repository
github
Last release
10 months ago

did-auth

styled with prettier docs Gitter

This library aims to ease the process of handling Did-Auth process between different parts, its implemented according to ABT-DID-Protocol, and can eliminate the threat of middle-man attach if properly used, there are typically 2 use case for the library:

  • dApp <--> dApp: for inter application communication, we provide AppAuthenticator and AppHandlers
  • dApp <--> DID Wallet: for application and wallet communication, we provide WalletAuthenticator and WalletHandlers

Table of Contents

Install

npm install @arcblock/jwt
// or
yarn add @arcblock/jwt

Usage

Between dApp and DID Wallet

WalletAuthenticator and WalletHandlers should be used together with @ocap/react-forge.

const { fromRandom } = require('@ocap/wallet');
const { WalletAuthenticator, WalletHandlers } = require('@arcblock/jwt');

// First setup authenticator and handler factory
const wallet = fromRandom().toJSON();
const authenticator = new WalletAuthenticator({
  wallet,
  baseUrl: 'http://wangshijun.natapp1.cc',
  appInfo: {
    description: 'Starter projects to develop web application on forge',
    icon: '/images/logo@2x.png',
    name: 'Forge Web Starter',
  },
  chainInfo: {
    host: 'http://did-workshop.arcblock.co:8210/api',
    id: 'forge',
  },
});

const handlers = new WalletHandlers({
  authenticator,
  tokenStorage: new MongoStorage({ url: process.env.MONGO_URI }),
});

// Then attach handler to express server
const express = require('express');
const app = express();

// This is required if you want to use dynamic baseUrl inference
app.set('trust proxy', true);

handlers.attach({
  prefix: '/api/did',
  action: 'login',
  claims: {
    profile: () => ({
      fields: ['fullName', 'email'],
      description: 'Please provide your name and email to continue',
    }),
  },
  onAuth: async ({ claims, userDid }) => {
    try {
      const profile = claims.find((x) => x.type === 'profile');
      console.info('login.success', { userDid, profile });
    } catch (err) {
      console.error('login.error', err);
    }
  },
});

// Then your app will have 5 api endpoints that can be consumed by AuthComponent
// - `GET /api/did/login/token` create new token
// - `GET /api/did/login/status` check for token status
// - `GET /api/did/login/timeout` expire a token
// - `GET /api/did/login/auth` create auth response
// - `POST /api/did/login/auth` process login request

Between dApp and dApp

Please note that AppAuthenticator and AppHandlers should be used to sign and verify the message sent between dApps, so there must are both a client and a server.

Initialize authenticator and handlers

const { fromRandom } = require('@ocap/wallet');
const { AppAuthenticator, AppHandlers } = require('@arcblock/jwt');

// First setup authenticator and handler factory
const wallet = fromRandom().toJSON();
const authenticator = new AppAuthenticator(wallet);
const handlers = new AppHandlers(authenticator);

For the server

const express = require('express');
const app = express();

app.post('/api/endpoint', handlers.attach(), (req, res) => {
  console.log('client.appPk', req.appPk);
  console.log('verified payload', req.payload);

  // Sent signed response: sensitive info should not be here
  res.jsonSecure({
    key: 'value',
  });
});

For the client

const axios = require('axios');

const signedPayload = authenticator.sign({
  amount,
  depositorDid,
  depositorPk,
  withdrawer: appAuth.wallet.address,
  merchantId: process.env.MERCHANT_ID,
});

const res = await axios.post('http://example.com/api/endpoint', signedPayload);
const payload = await authenticator.verify(res.data);
if (payload.error) {
  throw new Error(payload.error);
}
// Do something with the payload
1.18.138

10 months ago

1.18.137

10 months ago

1.18.136

10 months ago

1.18.135

1 year ago

1.18.134

1 year ago

1.18.133

1 year ago

1.18.132

1 year ago

1.18.131

1 year ago

1.18.130

1 year ago

1.18.129

1 year ago

1.18.128

1 year ago

1.18.127

1 year ago

1.18.126

1 year ago

1.18.125

1 year ago

1.18.124

1 year ago

1.18.123

1 year ago

1.18.122

1 year ago

1.18.121

1 year ago

1.18.120

1 year ago

1.18.119

1 year ago

1.18.118

1 year ago

1.18.117

1 year ago

1.18.116

1 year ago

1.18.115

1 year ago

1.18.114

1 year ago

1.18.113

1 year ago

1.18.112

1 year ago

1.18.111

1 year ago

1.18.110

2 years ago

1.18.109

2 years ago

1.18.108

2 years ago

1.18.107

2 years ago

1.18.106

2 years ago

1.18.105

2 years ago

1.18.104

2 years ago

1.18.96

2 years ago

1.18.99

2 years ago

1.18.98

2 years ago

1.18.97

2 years ago

1.18.103

2 years ago

1.18.102

2 years ago

1.18.101

2 years ago

1.18.100

2 years ago

1.18.95

2 years ago

1.18.94

2 years ago

1.18.93

2 years ago

1.18.85

2 years ago

1.18.89

2 years ago

1.18.88

2 years ago

1.18.87

2 years ago

1.18.86

2 years ago

1.18.92

2 years ago

1.18.91

2 years ago

1.18.90

2 years ago

1.18.81

2 years ago

1.18.84

2 years ago

1.18.83

2 years ago

1.18.82

2 years ago

1.18.80

2 years ago

1.18.70

2 years ago

1.18.74

2 years ago

1.18.73

2 years ago

1.18.72

2 years ago

1.18.71

2 years ago

1.18.78

2 years ago

1.18.77

2 years ago

1.18.76

2 years ago

1.18.75

2 years ago

1.18.79

2 years ago

1.18.69

2 years ago

1.18.67

2 years ago

1.18.66

2 years ago

1.18.68

2 years ago

1.18.41

3 years ago

1.18.40

3 years ago

1.18.45

3 years ago

1.18.44

3 years ago

1.18.43

3 years ago

1.18.42

3 years ago

1.18.49

3 years ago

1.18.48

3 years ago

1.18.47

3 years ago

1.18.46

3 years ago

1.18.38

3 years ago

1.18.39

3 years ago

1.18.63

2 years ago

1.18.62

2 years ago

1.18.61

2 years ago

1.18.60

2 years ago

1.18.65

2 years ago

1.18.64

2 years ago

1.18.52

3 years ago

1.18.51

3 years ago

1.18.50

3 years ago

1.18.56

3 years ago

1.18.55

3 years ago

1.18.54

3 years ago

1.18.53

3 years ago

1.18.59

2 years ago

1.18.58

2 years ago

1.18.57

2 years ago

1.18.34

3 years ago

1.18.33

3 years ago

1.18.37

3 years ago

1.18.36

3 years ago

1.18.35

3 years ago

1.18.1

3 years ago

1.18.0

3 years ago

1.18.5

3 years ago

1.18.4

3 years ago

1.18.3

3 years ago

1.18.2

3 years ago

1.18.9

3 years ago

1.18.8

3 years ago

1.18.7

3 years ago

1.18.6

3 years ago

1.18.30

3 years ago

1.18.32

3 years ago

1.18.31

3 years ago

1.17.23

3 years ago

1.18.23

3 years ago

1.18.22

3 years ago

1.18.21

3 years ago

1.18.20

3 years ago

1.18.27

3 years ago

1.18.26

3 years ago

1.18.25

3 years ago

1.18.24

3 years ago

1.18.28

3 years ago

1.18.12

3 years ago

1.18.11

3 years ago

1.18.10

3 years ago

1.18.16

3 years ago

1.18.15

3 years ago

1.18.14

3 years ago

1.18.13

3 years ago

1.18.19

3 years ago

1.18.18

3 years ago

1.18.17

3 years ago

1.17.22

3 years ago

1.17.21

3 years ago

1.17.20

3 years ago

1.17.15

3 years ago

1.17.14

3 years ago

1.17.13

3 years ago

1.17.12

3 years ago

1.17.19

3 years ago

1.17.18

3 years ago

1.17.17

3 years ago

1.17.16

3 years ago

1.16.10

3 years ago

1.16.14

3 years ago

1.16.13

3 years ago

1.16.12

3 years ago

1.16.17

3 years ago

1.16.16

3 years ago

1.16.15

3 years ago

1.17.11

3 years ago

1.17.10

3 years ago

1.6.10

3 years ago

1.17.2

3 years ago

1.17.1

3 years ago

1.17.0

3 years ago

1.17.6

3 years ago

1.17.5

3 years ago

1.17.4

3 years ago

1.17.3

3 years ago

1.17.9

3 years ago

1.17.8

3 years ago

1.17.7

3 years ago

1.16.7

3 years ago

1.16.6

3 years ago

1.16.5

3 years ago

1.16.9

3 years ago

1.16.8

3 years ago

1.16.3

3 years ago

1.16.2

3 years ago

1.16.1

3 years ago

1.16.0

3 years ago

1.16.4

3 years ago

1.15.0

3 years ago

1.15.4

3 years ago

1.15.3

3 years ago

1.15.2

3 years ago

1.15.1

3 years ago

1.14.20

3 years ago

1.15.7

3 years ago

1.14.21

3 years ago

1.15.6

3 years ago

1.14.22

3 years ago

1.15.5

3 years ago

1.14.23

3 years ago

1.14.24

3 years ago

1.14.25

3 years ago

1.14.19

4 years ago

1.14.1

4 years ago

1.14.0

4 years ago

1.14.5

4 years ago

1.14.4

4 years ago

1.14.3

4 years ago

1.14.2

4 years ago

1.14.9

4 years ago

1.13.75

4 years ago

1.14.8

4 years ago

1.13.74

4 years ago

1.14.7

4 years ago

1.13.77

4 years ago

1.14.6

4 years ago

1.13.76

4 years ago

1.13.71

4 years ago

1.13.70

4 years ago

1.13.73

4 years ago

1.13.72

4 years ago

1.13.79

4 years ago

1.13.78

4 years ago

1.13.66

4 years ago

1.13.65

4 years ago

1.13.68

4 years ago

1.13.67

4 years ago

1.13.69

4 years ago

1.13.80

4 years ago

1.13.86

4 years ago

1.14.10

4 years ago

1.13.85

4 years ago

1.14.11

4 years ago

1.14.12

4 years ago

1.13.82

4 years ago

1.13.81

4 years ago

1.13.84

4 years ago

1.13.83

4 years ago

1.14.17

4 years ago

1.14.18

4 years ago

1.14.13

4 years ago

1.14.14

4 years ago

1.14.15

4 years ago

1.14.16

4 years ago

1.13.64

4 years ago

1.13.63

4 years ago

1.13.60

4 years ago

1.13.62

4 years ago

1.13.61

4 years ago

1.13.57

4 years ago

1.13.56

4 years ago

1.13.59

4 years ago

1.13.58

4 years ago

1.13.55

4 years ago

1.13.54

4 years ago

1.13.53

4 years ago

1.13.52

4 years ago

1.13.51

4 years ago

1.13.50

4 years ago

1.13.49

4 years ago