{"id":18882281,"url":"https://github.com/otto-aa/solid-client-credentials-py","last_synced_at":"2025-09-04T07:31:21.924Z","repository":{"id":65973576,"uuid":"603415924","full_name":"Otto-AA/solid-client-credentials-py","owner":"Otto-AA","description":"Solid authentication with client credentials in python","archived":false,"fork":false,"pushed_at":"2025-03-05T10:16:34.000Z","size":452,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-30T22:03:19.001Z","etag":null,"topics":["authentication","client-credentials","dpop","solid"],"latest_commit_sha":null,"homepage":"https://solid-client-credentials.readthedocs.io/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Otto-AA.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","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-02-18T12:51:26.000Z","updated_at":"2025-03-05T10:16:37.000Z","dependencies_parsed_at":null,"dependency_job_id":"f39f37c8-7900-4471-9c3d-09ae942c66b9","html_url":"https://github.com/Otto-AA/solid-client-credentials-py","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Otto-AA/solid-client-credentials-py","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Otto-AA%2Fsolid-client-credentials-py","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Otto-AA%2Fsolid-client-credentials-py/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Otto-AA%2Fsolid-client-credentials-py/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Otto-AA%2Fsolid-client-credentials-py/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Otto-AA","download_url":"https://codeload.github.com/Otto-AA/solid-client-credentials-py/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Otto-AA%2Fsolid-client-credentials-py/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273573287,"owners_count":25129877,"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","status":"online","status_checked_at":"2025-09-04T02:00:08.968Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["authentication","client-credentials","dpop","solid"],"created_at":"2024-11-08T06:55:08.109Z","updated_at":"2025-09-04T07:31:21.912Z","avatar_url":"https://github.com/Otto-AA.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Solid Client Credentials\n\nSolid authentication with client credentials.\n\n[![Unix Build Status](https://img.shields.io/github/actions/workflow/status/Otto-AA/solid-client-credentials-py/main.yml?branch=main\u0026label=linux)](https://github.com/Otto-AA/solid-client-credentials-py/actions)\n[![Coverage Status](https://img.shields.io/codecov/c/gh/Otto-AA/solid-client-credentials-py)](https://codecov.io/gh/Otto-AA/solid-client-credentials-py)\n[![PyPI License](https://img.shields.io/pypi/l/SolidClientCredentials.svg)](https://pypi.org/project/SolidClientCredentials)\n[![PyPI Version](https://img.shields.io/pypi/v/SolidClientCredentials.svg)](https://pypi.org/project/SolidClientCredentials)\n[![PyPI Downloads](https://img.shields.io/pypi/dm/SolidClientCredentials.svg?color=orange)](https://pypistats.org/packages/SolidClientCredentials)\n\n## Setup\n\n### Requirements\n\n* Python 3.10+ (likely works with lower versions, but not tested)\n\n### Installation\n\n```bash\n$ pip install SolidClientCredentials\n```\n\n## Use Case\n\n!!! note\n    Client credentials are not standardized, thus you can't run your application through any Solid pod. However, users from any provider can give your app access through standardized mechanisms (eg ACL).\n\n\nYou can use client credentials to create a server-side application that authenticates as a webId on ESS or CSS. After obtaining the client credentials for a webId, you can use them to make authenticated requests on behalf of this account. You will be able to access all resources this webId has access to. If you want to access data of other users, they must grant access rights to your apps webId.\n\nSee also: [https://docs.inrupt.com/developer-tools/javascript/client-libraries/tutorial/authenticate-nodejs-script/](https://docs.inrupt.com/developer-tools/javascript/client-libraries/tutorial/authenticate-nodejs-script/)\n\n## Usage\n\nTo use this package you first need valid client credentials (see [below](#obtaining-client-credentials)). Given the client credentials you can use it as follows:\n\n```python\nfrom solid_client_credentials import SolidClientCredentialsAuth, DpopTokenProvider\nimport requests # or httpx\n\nclient_id = 'your-id'\nclient_secret = 'your-secret'\n\n# The server that provides your account (where you login)\nissuer_url = 'https://login.inrupt.com'\n\n# create a token provider\ntoken_provider = DpopTokenProvider(\n    issuer_url=issuer_url,\n    client_id=client_id,\n    client_secret=client_secret\n)\n# use the tokens with the requests (or httpx) library\nauth = SolidClientCredentialsAuth(token_provider)\n\nres = requests.get('https://example.org/private/stuff', auth=auth)\nprint(res.text)\n```\n\n## Obtaining client credentials\n\nThis is currently only possible with ESS and CSS.\n\n### ESS\n\nESS allows to manually obtain client credentials: [https://login.inrupt.com/registration.html](https://login.inrupt.com/registration.html)\n\n### CSS\n\nCSS allows to automatically obtain client credentials: [https://communitysolidserver.github.io/CommunitySolidServer/5.x/usage/client-credentials/](https://communitysolidserver.github.io/CommunitySolidServer/5.x/usage/client-credentials/)\n\nYou can also look at `css_utils.py` to see how this maps to python.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fotto-aa%2Fsolid-client-credentials-py","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fotto-aa%2Fsolid-client-credentials-py","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fotto-aa%2Fsolid-client-credentials-py/lists"}