TypeScript library to be used within decentralized applications for authentication and authorization using DIDs (Decentralized Identifiers) and VCs (Verifiable Credentials)
React Demo / Angular Demo / Vue Demo
Demo source code: iam-client-examples
For development purposes, please follow below steps to integrate the library with your dApps.
iam-client-lib
is written in TypeScript. Make sure to have Node.js (>= v10) installed.
Create a folder named iam-client-lib and clone this GIT project.
Also note that having a DID document with a public key is a prerequisite for using iam-client-lib and during initialization the library with attempt to add a public key to the DID document if one doesn't exist. This addition of the public key requires the account to be funded.
Latest stable version
npm i iam-client-lib
Prerelease version
npm i iam-client-lib@canary
Because of dependencies between modules they should be initialized in right order. This is achieved by accessing module initializer from initialization function of required module.
- Initializing signer service. It will initialize staking and messaging services and allow to connect to cache server
const {
signerService,
stakingService,
messagingService,
connectToCacheServer,
isSessionActive,
storeSession
} = await initWithPrivateKeySigner(privateKey, rpcUrl)
- Connecting to cache server. Depending on signer type signature might be requested
// IAM has builtin default settings for VOLTA CHAIN, which can overriden
setChainConfig(1111, {
didContractAddress: '0x3e2fb24edc3536d655720280b427c91bcb55f3d6',
ensRegistryAddress: '0xa372d665f83197a63bbe633ebe19c7bfd4943003',
ensResolverAddress: '0xe878bdcf5148307378043bfd2b584909aa48a227',
rpcUrl: 'http://some-rpc.com',
})
setMessagingOptions(1111, {
messagingMethod: MessagingMethod.Nats,
natsServerUrl: 'https://some-exchange-server.com'
})
setCacheClientOptions(1111, {
url: 'https://some-cache-server.com/',
cacheServerSupportsAuth: true,
})
const {
cacheClient,
domainsService,
connectToDidRegistry
} = await connectToCacheServer()
- Connecting to DID registry. If the document does not exist yet, a transaction will have to be sent
const {
didRegistry,
claimsService
} = await connectToDidRegistry()
For testing use npm run test:watch
Using npm
to install dependencies:
npm install ./energyweb-km-utils-v1.0.0.tgz
npm install ./energyweb-km-crypto-v1.0.0.tgz
npm install
To generate bundled JS files and types, use the following command. Generated files are located in the dist folder.
npm run build
Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to us.
This project is licensed under the GNU General Public License v3.0 or later - see the LICENSE file for details
Frequently asked questions and their answers will be collected here.