{"id":20631219,"url":"https://github.com/solidlabresearch/solid-identity-manager","last_synced_at":"2025-10-07T17:28:13.634Z","repository":{"id":207760542,"uuid":"715165944","full_name":"SolidLabResearch/solid-identity-manager","owner":"SolidLabResearch","description":"Browser extension to manage multiple identities. ","archived":false,"fork":false,"pushed_at":"2024-04-12T07:57:58.000Z","size":709,"stargazers_count":0,"open_issues_count":4,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-01-17T07:09:35.891Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SolidLabResearch.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-11-06T15:52:26.000Z","updated_at":"2023-11-17T12:01:26.000Z","dependencies_parsed_at":"2024-01-29T10:32:50.801Z","dependency_job_id":"72f957ea-8659-4fb1-a7a5-38216a485ff6","html_url":"https://github.com/SolidLabResearch/solid-identity-manager","commit_stats":null,"previous_names":["solidlabresearch/solid-identity-manager"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SolidLabResearch%2Fsolid-identity-manager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SolidLabResearch%2Fsolid-identity-manager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SolidLabResearch%2Fsolid-identity-manager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SolidLabResearch%2Fsolid-identity-manager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SolidLabResearch","download_url":"https://codeload.github.com/SolidLabResearch/solid-identity-manager/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242588427,"owners_count":20154203,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-16T14:11:34.570Z","updated_at":"2025-10-07T17:28:08.591Z","avatar_url":"https://github.com/SolidLabResearch.png","language":"JavaScript","readme":"# Solid Identity Manager\n\nThis Chrome extension acts as a remote control to manage your Solid identities and\nmake it easy for users to switch between their WebIDs or IDPs.\nThe way this works is by giving users the option to add profiles to the extension which\nit will store to persist over the course of its use.\n\n![alt text](./screenshots/create-profile.png)\n![alt text](./screenshots/profile.png)\n\nThe profile has a name and\na color to distinguish it from other profiles.\nThe extension lists all profiles when clicking on the extension's icon.\n\n![alt text](./screenshots/popup.png)\n\nThe extension provides an API to a Solid app through the use of `chrome.runtime.connect`.\nYou find an example in `showcase-app/plugin`.\nThe idea is for the Solid app to manage the authentication itself, and\nthe extension only provides a way of keeping track of Solid identities.\n\nYou find a screencast [here](https://cloud.ilabt.imec.be/index.php/s/9C63HqJmZiJj4e5).\n\n## Quickstart\n\nWe developed this extension using Node v18.\n\n```shell\nnpm i\nnpm start\n```\n\nThis will start up the build-process with hot-reload.\n\nTo add the extension to the browser, navigate to `chrome://extensions/` and click `Load unpacked`.\nNavigate and add the `dist/` folder of this project.\n\nHot-reloading replenishes the files every time you save something in `src`.\nIn some cases, mainly when errors occur, you must reload the module in the `chrome://extensions/`.\nIt should not be removed. You may pin the extension for convenience.\n\nUse the `showcase-app` if you want to try out an example Solid app to test this extension end-to-end.\n\n```shell\ncd `./showcase-app`\nnpm install\nnpm start\n```\n\nNavigate to `http://localhost:5173/`.\nWhen the extension is present and has identities,\nthe option will be shown to continue as the active set profile.\n\n## Building\n\nYou create a build via\n\n```shell\nnpm run build\n```\n\nThis script generates a zip file  called `\u003cname\u003e-\u003cversion\u003e.zip` inside `./releases`.\nYou can change the name of the extension `name` in `./src/manifest.json`.\nThe `version` is sourced from `./package.json`.\nTo bump a version, run `npm version \u003cpatch|minor|major\u003e`, which will increase it in `./package.json`, then run\n`npm run build` to sync that version to the release build.\n\n## Publish to Chrome Web Store\n\nYou publish the extension to the Chrome Web Store via the following steps:\n\n1. Build the extension to generate a release zip file inside `./releases` via\n\n   ```shell\n   npm run build\n   ```\n\n2. Upload the zip file to your Chrome Web Store Developer Dashboard\n(see [official Google guide](https://developer.chrome.com/docs/webstore) for details).\n\n## Testing the flow\n\nIn order to full test how this extension works end-to-end, you must take the following steps:\n\n- Follow the steps in [quickstart](#quickstart) to run the extension and the showcase app\n- Open the extension and **add a new profile** if you haven't already\n- A dialog appears in which you can give the new profile a display and color + add either an IDP or WebID\n- Once created, the dialog and extension will close.\nWhen you open the extension again the profile will be in there and selected as active.\n- In the Solid showcase app running on `http://localhost:5173/` you find the login widget that\nallows you to one-click sign-in with the active profile.\nIf it is not present (it should),\nyou can switch profile to trigger updates between the app and the extension.\n- After clicking the one-click sign-in button,\nyou will be redirected to the IDP where you must sign in.\nYou will be able to authorize the WebID with the Solid showcase app.\n- You may then use the logout button to prompt logging out.\nWhen you select another identity in the extension,\nyou will be automatically logged out.\n\n## Obtaining WebIDs for testing\n\nYou can create temporary WebIDs using `https://pod.playground.solidlab.be/idp/register/`.\nWhen creating a new profile you may add `https://pod.playground.solidlab.be` as the IDP, or\nthe WebID you've obtained after registration.\nThese are reset daily, so make sure you've recreated it for authorization to work.\n\n```mermaid\nsequenceDiagram\n    actor user as User\n    participant extension as Solid Identity Manager\n    participant app1 as Solid App\n    participant browser as Browser\n    participant idp as Identity Provider\n\n    user -\u003e\u003e extension: Add new profile called \"Profile A\" (automatically becomes active profile)\n    user -\u003e\u003e browser: Browse to app\n    browser -\u003e\u003e app1: Open app\n    app1 -\u003e\u003e browser: Subscribe to data/changes from Solid Identity Manager\n    app1 -\u003e\u003e browser: Ask for active profile\n    browser -\u003e\u003e extension: Ask for active profile\n    extension --\u003e\u003e browser: Return Profile A\n    browser --\u003e\u003e app1: Return Profile A\n    app1 -\u003e\u003e app1: Show button to log in with Profile A\n    user -\u003e\u003e app1: Click on button\n    app1 -\u003e\u003e browser: Redirect user to IDP\n    browser -\u003e\u003e idp: Load login and consent page\n    user -\u003e\u003e browser: User logs in and gives consent\n    browser -\u003e\u003e idp: Send log-in and consent data to IDP\n    idp -\u003e\u003e browser: Redirect user to app\n    user -\u003e\u003e app1: See \"Logged in\" message\n    user -\u003e\u003e extension: Add new profile called \"Profile B\"\n    user -\u003e\u003e extension: Set \"Profile B\" as active profile\n    extension -\u003e\u003e browser: Notify subscribed apps about profile change\n    browser -\u003e\u003e app1: Notify about profile change\n    app1 -\u003e\u003e app1: Log out Profile A\n    app1 -\u003e\u003e app1: Show button to log in with Profile B\n```\n\n### End-to-end testing\n\nTo run end-to-end tests, you must first have built the extension (`npm run build`).\nThen you run the tests via `npm test`.\nIf you want to run the tests interactively, you use `npm run test:ui`.\n\n## License\n\nThis code is copyrighted by [Ghent University – imec](http://idlab.ugent.be/) and\nreleased under the [MIT license](http://opensource.org/licenses/MIT).\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsolidlabresearch%2Fsolid-identity-manager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsolidlabresearch%2Fsolid-identity-manager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsolidlabresearch%2Fsolid-identity-manager/lists"}