Bridging IOTA's self-sovereign identities to existing "Web 2.0" OAuth solutions

Overview

CI GitHub release (latest SemVer) codecov GitHub license

IOTA Identity Provider

Bridging IOTA's self-sovereign identities to existing "Web 2.0" OAuth solutions.

Login With IOTA

NOTE: This plugin has NOT been audited or tested in production environments and should only used in non-critical environments until further notice!

TL;DR

  • This repo contains a plugin for the battle-tested Keycloak Open Source Identity and Access Management
  • It adds a custom endpoint where IOTA Identity credentials (DID) can be posted to
  • The plugin tries to verify your Verifiable Credential with the Tangle and hands over the containing user claims to Keycloak's native user management
  • From that point on, every communication is standard-compliant OAuth / OpenID Connect
  • Clients (such as webshops, sites or other consumers) can follow standard protocols and do not need to be aware of DIDs or IOTA Identity
  • very easy to implement for shops and websites

This solution is not decentralized by design! It acts as a bridge between two protocols!

Features

  • Login to any web app with your IOTA Credentials through any SSI wallet
    • very easy for clients to implement the "Login with IOTA" button and specify an Identity Provider with this plugin enabled
  • Ease-of-use: no need to remember passwords (passwordless login)
  • Security: underlying standard-compliant protocol and implementation (OAuth, Keycloak)
  • Privacy: Plugin is "transparent", user data is only persisted during a user wants to be logged in

Keywords

DID, SSI, OAuth, OpenID Connect, OIDC, IOTA, Identity, web3

Architecture & Diagrams

--architecture--

Components

Read more about the different components here.

For website owners (clients)

Offer "Login with IOTA" on your website!

CAUTION: This application has not been audited, it should ONLY be used in non-production environments!

You can run your own Keycloak instance with your own config. You can also register your existing application with the deployed Identity Provider at https://auth.cambriota.dev (still in development).

Usage

You need a DID document published to the Tangle. You also need to be able to create and sign Verifiable Credentials and Presentations.

You can use this CLI wallet to create your DID and Credentials.

Navigate to https://auth.cambriota.dev/demo/ to try it out!

Development & Contribution

Run

Read about running your own instance. --link--

Install

Prerequisites

  • Java 11
  • Docker, docker-compose
./gradlew jar

Then copy the jar to $KEYCLOAK_HOME/standalone/deployments/ and touch a file in the same directory keycloak-iota-spi-0.1.0.jar.dodeploy.

Dev notes

Request

Example request

Debugging

Run scripts/run-local.sh, then attach a debugger to localhost:8787.

TODOs

  • add scheduled task to anonymize/wipe user after given time (anonymize: hash email, overwrite all other fields. on next login: hash email again, if already exists: populate fields again)
  • replace manual "Continue" button click action with automatic forwarding (detect valid session in Keycloak)
  • improve styling of Login page
  • add github actions for security scan, code quality, etc.
  • add github flows: release.yaml, publish-docker.yaml
  • add application profile "prod" to build.sh (gradlew, docker)
  • run Keycloak embedded in Spring Boot application / Quarkus / native image?
  • remove unnecessary artifacts (such as src/main/docker)
  • create web service that issues VCs for successful email validation. Request those VCs in this plugin to upgrade a user to email_verified: true.
  • add some integration tests
You might also like...

Self-hosted Git Server with CI/CD and Kanban

Self-hosted Git Server with CI/CD and Kanban

NOTE: We develop OneDev at code.onedev.io for sake of dogfooding. All issues and pull requests should be submitted there Self-hosted Git Server with K

Dec 31, 2022

Java port of Brainxyz's Artificial Life, a simple program to simulate primitive Artificial Life using simple rules of attraction or repulsion among atom-like particles, producing complex self-organzing life-like patterns.

Java port of Brainxyz's Artificial Life, a simple program to simulate primitive Artificial Life using simple rules of attraction or repulsion among atom-like particles, producing complex self-organzing life-like patterns.

ParticleSimulation simple Java port of Brainxyz's Artificial Life A simple program to simulate primitive Artificial Life using simple rules of attract

Oct 5, 2022

Security engine for Java (authentication, authorization, multi frameworks): OAuth, CAS, SAML, OpenID Connect, LDAP, JWT...

Security engine for Java (authentication, authorization, multi frameworks): OAuth, CAS, SAML, OpenID Connect, LDAP, JWT...

pac4j is an easy and powerful security engine for Java to authenticate users, get their profiles and manage authorizations in order to secure web appl

Dec 30, 2022

基于 Spring Security OAuth 的统一账号管理平台

基于 Spring Security OAuth 的统一账号管理平台

基于 Spring Security OAuth 的统一账号管理平台 前后端演示地址: https://tao.flizi.cn 支持密码模式演示 输入账号 123456, 密码: 123456, 以及验证码后点击登录 支持授权登录演示 输入手机号 123456, 密码: 123456, 以及验证码

Nov 9, 2022

Spring Boot OAuth 2.0 Client Implementation + MySQL Integration

Spring Boot OAuth 2.0 Client Implementation + MySQL Integration

Spring Boot OAuth 2.0 Client + MySQL 1. What is OAuth 2.0 ? The OAuth 2.0 authorization framework enables a third-party application to obtain limited

May 12, 2022

Zero-Dependency RFC 8252 OAuth 2.0 Authorization Flow

Tiny OAuth2 Client This is a minimal zero-dependency implementation of the RFC 8252 OAuth 2.0 for Native Apps, relying on Loopback Interface Redirecti

Jun 17, 2022

The in-game login system for Grasscutter is based on oauth and GCAuth.

GCAuth OAuth The in-game login system for Grasscutter is based on oauth and GCAuth. Current Features: Use Twitter oauth to login Custom pages Importan

Nov 14, 2022

Kafdrop configured for Openshift, with OAuth proxy

Kafdrop configured for Openshift, with OAuth proxy

Deploying Kafdrop to Openshift This repo takes the original Kafdrop and extends it to deploy it on Openshift. Integration with Kafka Clusters managed

Jul 17, 2022

The in-game login system for Grasscutter is based on oauth and GCAuth.

GCAuth OAuth The in-game login system for Grasscutter is based on oauth and GCAuth. Current Features: Use Twitter oauth to login Custom pages Importan

Aug 3, 2022

A fast, light and cloud native OAuth 2.0 authorization microservices based on light-4j

A fast, light weight and cloud native OAuth 2.0 Server based on microservices architecture built on top of light-4j and light-rest-4j frameworks. Stac

Dec 17, 2022

Solutions for some common algorithm problems written in Java.

Solutions for some common algorithm problems written in Java.

Algorithms This repository contains my solution for common algorithms. I've created this repository to learn about algorithms and improve solutions to

Dec 30, 2022

MCQs and coding questions solutions of Object-Oriented Programming java of coding ninjas

cn-java-sols (⌐■_■) Link to This repository Other similar repository of my friend Link 🤩 enjoy having full marks 💯 😍 now answers avaible up to Stri

Dec 27, 2022

Solutions of many problems from HackerRank

Solutions of some problems from HackerRank made specially for beginners and who are in the intermediate level If you like this project, please leave m

Nov 14, 2022

This repository contains my solutions to programming problems of the UVa online-judge.

UVa Solutions This repository contains my solutions to programming problems of the UVa online-judge. Problem Set Volumes (100...1999) Volume 12 Proble

Nov 15, 2021

Solutions to HackerRank problems

HackerRank This is my solutions to HackerRank problems using java, might not be the best solution but at least i tried Algorithms Subdomain Difficulty

Apr 4, 2022

Comparison between Java and Common Lisp solutions to a phone-encoding problem described by Prechelt

Prechelt Phone Number Encoding This project implements the phone number encoding described by Lutz Prechelt in his article for the COMMUNICATIONS OF T

Nov 30, 2021

Java solutions for LeetCode

leetcode-java Java solutions for LeetCode Environment Intellij IDEA 2021.2 JDK 16.0.1 Gradle 7.1 Junit 5.7 ProblemList # Title Difficulty Link Solutio

Aug 5, 2021

Repository with LeetCode Solutions and Dedicated Index to prepare for your FAANGM Interviews.

Repository with LeetCode Solutions and Dedicated Index to prepare for your FAANGM Interviews. Feel free to share and Contribute to this repository.

Jan 1, 2023
Comments
  • build(deps): bump minimist from 1.2.5 to 1.2.6 in /sidecar

    build(deps): bump minimist from 1.2.5 to 1.2.6 in /sidecar

    Bumps minimist from 1.2.5 to 1.2.6.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
Owner
Community-driven tools, prototypes and services for the @iotaledger ecosystem. #IOTA #Assembly #Shimmer
null
Security engine for Java (authentication, authorization, multi frameworks): OAuth, CAS, SAML, OpenID Connect, LDAP, JWT...

pac4j is an easy and powerful security engine for Java to authenticate users, get their profiles and manage authorizations in order to secure web appl

PAC4J 2.2k Dec 30, 2022
Java solutions for LeetCode

leetcode-java Java solutions for LeetCode Environment Intellij IDEA 2021.2 JDK 16.0.1 Gradle 7.1 Junit 5.7 ProblemList # Title Difficulty Link Solutio

null 5 Aug 5, 2021
Provides some Apple Wallet functionality, like adding passes, removing passes and checking passises for existing.

react-native-wallet-manager Provides some Apple Wallet's functionality, like adding passes, removing passes and checking passises for existing. Instal

dev.family 50 Nov 12, 2022
An assistance platform made using Spring framework that analyses your code, and helps you either to start a devops project, or to turn an existing project into a devops project using open source software (Git, Docker, Jenkins..)

DevOpsify Description An assistance platform made using Spring framework that analyses your code, and helps you either to start a devops project, or t

obaydah bouifadene 14 Nov 8, 2022
[INACTIVE] Avian is a lightweight virtual machine and class library designed to provide a useful subset of Java's features, suitable for building self-contained applications.

Avian - A lightweight Java Virtual Machine (JVM) PLEASE NOTE: This project is not currently being developed, maintained, or supported. Feel free to us

ReadyTalk 1.2k Dec 22, 2022
Hdiv CE | Application Self-Protection

New to Hdiv? Check this out Hdiv: Application Self-Protection Hdiv is a leading provider of open source software for real-time, self-protected applica

Hdiv 208 Nov 14, 2022
Apache Drill is a distributed MPP query layer for self describing data

Apache Drill Apache Drill is a distributed MPP query layer that supports SQL and alternative query languages against NoSQL and Hadoop data storage sys

The Apache Software Foundation 1.8k Jan 7, 2023
ClockMonster is a self-hosted service for scheduling one-time or repeating jobs within your system

ClockMonster ClockMonster is a self-hosted service for scheduling one-time or repeating jobs within your system. Jobs for now are HTTP POST requests,

Scott Hiett 17 Dec 15, 2022
This is a little self hosted shared planner application server.

VPR-Backend This project includes the backend for the VPR-project. Installation and Getting Started To run the server you first have to install a MySQ

Marc Beyer 2 Feb 5, 2022
Microhttp - a fast, scalable, event-driven, self-contained Java web server

Microhttp is a fast, scalable, event-driven, self-contained Java web server that is small enough for a programmer to understand and reason about.

Elliot Barlas 450 Dec 23, 2022