Code Monkey home page Code Monkey logo

integration-services's Introduction

banner

StackExchange Discord Discord Apache 2.0 license

Introduction โ—ˆ Documentation & Resources โ—ˆ Contributing


Introduction

IOTA Integration Services is a Node microservice responsible to simplify access to decentralized digital identity, also known as Self-Sovereign Identity (SSI) and Streams techonology on the IOTA tangle.

WARNING

This library is currently in its under development and might undergo large changes! Until a formal third-party security audit has taken place, the IOTA Foundation makes no guarantees to the fitness of this library. As such, it is to be seen as experimental and not ready for real-world applications. Nevertheless, we are very interested in feedback about user experience, design and implementation, and encourage you to reach out with any concerns or suggestions you may have.

Documentation and Resources

Iota Wiki

You can find the following resources in the Iota Wiki:

  1. Getting started: All the resources you need to get started.
  2. Explanations: An introduction to the main concepts, use cases and API definitions for the Audit Trail Gateway and Self-Sovereign Identity(SSI) Bridge.
  3. How-Tos: How-to guides covering the following topics:
    1. Integration Services SDK: How-to guides on creating and managing decentralized identities, verifiable credentials, and channels using the Integration Services SDK.
    2. Integration Services CLI: How-to guides on creating and managing decentralized identities using the Integration Services Command Line Interface.
    3. Authentication: How-to guide to authenticate your identity using the Integration Services SDK or Java and Node.js.
  4. References: Detailed specification of all endpoints for:
    • Self Sovereign Identity(SSI) Bridge API Reference
    • Audit Trail API Reference.
  5. Troubleshooting: Instructions on how to resolve any issues you may encounter while using the services.
  6. FAQ: Answers to the most common doubts.
  7. Contribute: Find ways to help the project.
  8. Contact: Get in touch with the Integration Services team.

Iota Integration Services Website

Website for a collaborative effort to provide help, guidance and spotlight to the IOTA Integration Services Community through offering feedback and introducing consistent workflows around IOTA decentralized identities and audit trails.

IOTA Integration Service Website.

Contributing

We would love to have you help us with the development of IOTA Integration Services. Each and every contribution is greatly valued!

To contribute directly to the repository, simply fork the project, push your changes to your fork and create a pull request to get them included!

The best place to get involved in discussions about this framework or to look for support at is the #iota-cloud-tools channel on the IOTA Discord.

You can also ask questions on our Stack Exchange.

integration-services's People

Contributors

albydeca avatar dependabot[bot] avatar dr-electron avatar duncanmain avatar francerdan avatar jlvandenhout avatar juribog avatar luca-moser avatar lucas-tortora avatar mastrogiovanni avatar michelenati avatar sadjy avatar schereo avatar squashy83 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

integration-services's Issues

Demo client + Tutorial

Folder:
clients/frama-c-client

There shall be two clients each in a sub folder of frama-c-client
1. Client: Log Creator

Subfolder:
log-creator

  1. Client adds the attached file as local file into log-creator folder. Give the file some unique identitifier. Like date + time and short name.

There shall be one script which executes the following behavior

  1. The client creates an identity for himself with a claim representing information about him
{
  "username": "frama-c-log-creator",
  "claim": {
        "type":"Service",
        "name":"Frama C Log Creator",
        "category": "embedded-tool",
        "description":"Creates embedded logs"
   }
}
  1. The client creates a stream channel with the body:
{
    "topics": [{"type":"hashed-audit-log-file","source":"frama-c-client"}],
    "encrypted":false
}

_This request and some others require authentication. There is a sample how to integrate an axios interceptor into the request, so the authentication is automatically done if a 401 status is received. Also integrate this interceptor into the requests. Like: _
axios.interceptors.response.use((response) => response, errFunc(issuer));
See: /clients/summer-school-client/create-credentials for more details

Then the second client needs to subscribe to this channel. After the client has subscribed it can do the following.

  1. Authorize client using its identity or subscriber link

  2. Hash file write the hash and unique id of the file into the channel.

2. Client: Log Auditor

Subfolder:
log-auditor

  1. Client adds the attached file as local file into log-creator folder. Give the file some unique identitifier. Like date + time and short name. (Same as defined above)

  2. The log-auditor also creates an identity with a claim representing information about him

{
  "username": "frama-c-log-auditor",
  "claim": {
        "type":"Service",
        "name":"Frama C Log Auditor",
        "category": "embedded-tool",
        "description":"Audits embedded logs"
   }
}
  1. Subscribe to channel of tool 1

Now the first client needs to authorize the 2nd client and write data to the log afterwards. After this is done the audit client can fetch the data from the channel.

  1. Fetch data from channel

  2. Locally hash file and compare fetched hash from the channel with the local hash.

  3. If they are the same log some message

Channel Service

Channel service which is used to create a channel in streams and write/read to/from it.

Clients

Several clients which interact with the e-commerce tools

User Service

Having a user service, clients can search for users and also crud its user information.

Basic Role Based Acccess Management

A user has a role which identifies privileges he is able to do.

For simplification this role can be: 'admin' or 'user'!

Admins can for instance users of other companies or update/delete other users which are not themself.

Role can be extracted from jwt of the bearer token!

Create admin user on startup like the api server via admin.ts tool!

adjust authorization mechamism to consider admin privileges!
tests for the admin authorization mechanism

Read data from channel

  • send signed package or send tagged package
    => signed as flag?
  • differentiate public or private
  • automatically add date

evtl.

  • possibility to hash data using param

Get channel history using a shared key

Prerequesite:

  • Author needs to have defined a preshared key otherwise no auditors are able to get access to it

There are two scenarios a auditor shall subscribe to a channel

  1. auditor already knows preshared key
  2. auditor uses subscribe and author gives him access to this preshared key
    ==> 2nd option needs to be done in a separate ticket and is an optional requirement

Both times subscribe shall be used but in the first case they auditor is directly allowed to read from the channel since he knows about the key to access the data

Finalize Validate data against tangle

FR-085 Data Integrity Verification (Must Have) DLT-003

  • Use chunk of data array with links + data inside to validate
  • fetch the links from the tangle/channel and compare them at api side

Verifiable Credential Standard

Create/Use standardized credentials.

Look into standards for verifiable credential attributes for the following categories:

  • Devices

  • Organisations

  • Users/Employees

  • set credential type according to classification

Remove subscription to a channel

  • revoke and remove the subscription to a channel

Won't be done:
possibility to remove all subscriptions of the user when it gets deleted

Otherwise the identity service would be dependent of the audit trail but we don't want this dependency. Should be done by client backend...

DevOps

Deployment, Pipelines, CI/CD

Subscription Service

Service to authorize/unauthorize and request subscriptions of a IOTA streams channel.

Interconnection between APIs

A api can connect to a parent api where it can also store and request channel information from. So an api is able to exchange channel information with other apis.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.