{"id":20793820,"url":"https://github.com/telekom/smartcredentials-sdk-android","last_synced_at":"2025-08-15T14:09:04.022Z","repository":{"id":35811350,"uuid":"184036324","full_name":"telekom/SmartCredentials-SDK-android","owner":"telekom","description":"An SDK and Library that is used in several Deutsche Telekom mobile apps","archived":false,"fork":false,"pushed_at":"2024-09-23T13:49:59.000Z","size":2649,"stargazers_count":12,"open_issues_count":2,"forks_count":4,"subscribers_count":4,"default_branch":"develop","last_synced_at":"2025-08-09T22:59:47.485Z","etag":null,"topics":["authentication","authorization","camera","identity","ocr","otp","qrcode-login","sdk","storage"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/telekom.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","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,"zenodo":null}},"created_at":"2019-04-29T08:59:38.000Z","updated_at":"2024-12-29T13:11:29.000Z","dependencies_parsed_at":"2024-09-16T13:04:07.426Z","dependency_job_id":"0fddad3f-a5bf-4d41-914b-e50dd1a38ba8","html_url":"https://github.com/telekom/SmartCredentials-SDK-android","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/telekom/SmartCredentials-SDK-android","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/telekom%2FSmartCredentials-SDK-android","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/telekom%2FSmartCredentials-SDK-android/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/telekom%2FSmartCredentials-SDK-android/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/telekom%2FSmartCredentials-SDK-android/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/telekom","download_url":"https://codeload.github.com/telekom/SmartCredentials-SDK-android/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/telekom%2FSmartCredentials-SDK-android/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270579613,"owners_count":24610044,"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-08-15T02:00:12.559Z","response_time":110,"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","authorization","camera","identity","ocr","otp","qrcode-login","sdk","storage"],"created_at":"2024-11-17T16:11:49.557Z","updated_at":"2025-08-15T14:09:03.991Z","avatar_url":"https://github.com/telekom.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"﻿\n# SmartCredentials\n\nSmartCredentials is a programmer’s library, presenting a unified interface for various solutions and protocols used to authenticate, \nauthorize and conduct any kind of transactions between a user or a user-facing app and services. \nIt uses the abstraction of a credential, which can handily be made available to the user for choosing the right \nidentity/ entitlement and authenticating themselves for appropriate security. \nOn the ‘other end’ actual technological functions are structured in modules that can be ‘plugged’ in to the SmartCredentials core \nto extend and alter its behavior behind the unifying credentialing APIs.\n\nSmartCredentials builds on earlier works of T-Labs’ identity and payment team on a user-centric wallet. It is still feasible to add similar,\nuser-friendly UI, support for secure elements (SE), NFC-based payments, card-based identity management and more if ever needed.\n\n## Usage\n\nMake sure you have **mavenCentral** declared as a repository in your project's build.gradle file.\n```\nrepositories {\n    google()\n    mavenCentral()\n    ...\n}\n```\nContinue by adding one or more Smart Credentials dependencies to your application or SDK build.gradle file, using the latest Smart Credentials version available.\n\n[![Maven Central](https://maven-badges.herokuapp.com/maven-central/de.telekom.smartcredentials/core/badge.svg)](https://maven-badges.herokuapp.com/maven-central/de.telekom.smartcredentials/core)\n```\nimplementation(\"de.telekom.smartcredentials:core:$smartCredentialsVersion\")\nimplementation(\"de.telekom.smartcredentials:authentication:$smartCredentialsVersion\")\nimplementation(\"de.telekom.smartcredentials:authorization:$smartCredentialsVersion\")\nimplementation(\"de.telekom.smartcredentials:camera:$smartCredentialsVersion\")\nimplementation(\"de.telekom.smartcredentials:documentscanner:$smartCredentialsVersion@aar\"){\n\ttransitive = true\n}\nimplementation(\"de.telekom.smartcredentials:eid:$smartCredentialsVersion\")\nimplementation(\"de.telekom.smartcredentials:identityprovider:$smartCredentialsVersion\")\nimplementation(\"de.telekom.smartcredentials:networking:$smartCredentialsVersion\")\nimplementation(\"de.telekom.smartcredentials:otp:$smartCredentialsVersion\")\nimplementation(\"de.telekom.smartcredentials:persistentlogging:$smartCredentialsVersion\")\nimplementation(\"de.telekom.smartcredentials:pushnotifications:$smartCredentialsVersion\")\nimplementation(\"de.telekom.smartcredentials:qrlogin:$smartCredentialsVersion\")\nimplementation(\"de.telekom.smartcredentials:security:$smartCredentialsVersion\")\nimplementation(\"de.telekom.smartcredentials:storage:$smartCredentialsVersion\")\n```\n\nSync gradle files. You should be able now to start using Smart Credentials in your code.\n\n**Initialization of the SDK and Core module.**\n```\nSmartCredentialsConfiguration configuration = new SmartCredentialsConfiguration.Builder(getApplicationContext(), getString(R.string.current_user_id))\n    .setLogger(DemoLogger.getLogger())\n    .setRootCheckerEnabled(RootDetectionOption.ALL)\n    .setAppAlias(getString(R.string.app_alias))\n    .build();\nSmartCredentialsCoreFactory.initialize(configuration);\nCoreApi coreApi = SmartCredentialsCoreFactory.getSmartCredentialsCoreApi();\n```\nIn order to initialize the Smart Credentials SDK you need to provide a configuration containing the application context and the user ID. Additionally, you can set a logger, the root detection strategy and the application alias. \n\nSome predefined root detection strategies can be found in the ```RootDetectionOption``` class, such as: ```NONE``` or ```ALL```. If they don't meet your needs, you are able to define your own root detection strategy, by creating a set of root detection strategies, using the available options from ```RootDetectionOption```. \n\nIntercepting the SDK internal logging can be made by implementing the ```ApiLogger``` interface from the Smart Credentials SKD and providing it in the builder.\n\nA core module need to be initialized, because all other modules are dependent to it and they need a ```CoreApi``` instance for their initialization.\n\n**Usage of Smart Credentials modules**\n\n1. Authentication module  \nAn user guide for the Authentication module can be found [here](https://github.com/telekom/SmartCredentials-SDK-android/tree/develop/SmartCredentials_aOS/authentication), as well as a [demo application](https://github.com/telekom/SmartCredentials-SDK-android/tree/develop/samples/authentication).\n2. Authorization module  \nAn user guide for the Authorization module can be found [here](https://github.com/telekom/SmartCredentials-SDK-android/tree/develop/SmartCredentials_aOS/authorization), as well as a [demo application](https://github.com/telekom/SmartCredentials-SDK-android/tree/develop/samples/authorization).\n3. Camera module  \nAn user guide for the Camera module can be found [here](https://github.com/telekom/SmartCredentials-SDK-android/tree/develop/SmartCredentials_aOS/camera), as well as a [demo application](https://github.com/telekom/SmartCredentials-SDK-android/tree/develop/samples/camera).\n4. Core module  \nAn user guide for the Core module can be found [here](https://github.com/telekom/SmartCredentials-SDK-android/tree/develop/SmartCredentials_aOS/core), as well as a [demo application](https://github.com/telekom/SmartCredentials-SDK-android/tree/develop/samples/core).\n5. Document Scanner module  \nAn user guide for the Document Scanner module can be found [here](https://github.com/telekom/SmartCredentials-SDK-android/tree/develop/SmartCredentials_aOS/documentscanner), as well as a [demo application](https://github.com/telekom/SmartCredentials-SDK-android/tree/develop/samples/documentscanner).\n6. eID module  \nAn user guide for the eID module can be found [here](https://github.com/telekom/SmartCredentials-SDK-android/tree/develop/SmartCredentials_aOS/eid).\n7. Identity Provider module\nAn user guide for the identity provider module can be found [here](https://github.com/telekom/SmartCredentials-SDK-android/tree/develop/SmartCredentials_aOS/identityprovider), as well as a [demo application](https://github.com/telekom/SmartCredentials-SDK-android/tree/develop/samples/oneclickbusiness).\n8. OTP module\nAn user guide for the OTP module can be found [here](https://github.com/telekom/SmartCredentials-SDK-android/tree/develop/SmartCredentials_aOS/otp), as well as a [demo application](https://github.com/telekom/SmartCredentials-SDK-android/tree/develop/samples/otp).\n9. Push notifications module  \nAn user guide for the Push notifications module can be found [here](https://github.com/telekom/SmartCredentials-SDK-android/tree/develop/SmartCredentials_aOS/pushnotifications), as well as a [demo application](https://github.com/telekom/SmartCredentials-SDK-android/tree/develop/samples/pushnotifications).\n10. Storage module  \nAn user guide for the Storage module can be found [here](https://github.com/telekom/SmartCredentials-SDK-android/tree/develop/SmartCredentials_aOS/storage), as well as a [demo application](https://github.com/telekom/SmartCredentials-SDK-android/tree/develop/samples/storage).\n \n## Support\n\nDiscussions about the SmartCredentials library take place on this [Slack](https://smartcredentialssdk.slack.com/) channel. Anybody is welcome to join these conversations. \n\n## Contributing\n\nWe are open for any contribution on the topic of credential management, authentication and user-centric identity.\nEven more are we looking for partners who have an interest in adding their solutions to the list of existing modules. However, if you have good reason to think it would be good to have **someone else's solution** adapted, you might just be the person who simply does it. Just make sure you are **allowed** to handle the code or executable in question.\n\nPull requests for small improvements or bug fixing are welcomed. For major changes, please open an issue first to discuss what you would like to change.\n\nIn case of contributing, please check the [contributing guidelines](/CONTRIBUTING.md) and [coding standards](./CODING-STANDARDS.md).\n\n## Extending\nSmart Credentials is an open and easily extendable library. In fact, it is so open and extendable that anyone can come with a parallel implementation of any module, except the core module.\n\nBy using Smart Credentials to build your module, not only you save time and energy for your implementation by making use of the existing features, but the new created module can also be used by others in combination with any of Smart Credentials existing modules.\n\nCurrently, there are 13 extendable modules:\n\n1.  Authentication\n2.  Authorization\n3.  Camera\n4.  Document scanner\n5.  Eid\n6.  Networking\n7.  OneClick Business client\n8.  Identity Provider\n9.  Otp\n10. Persistent logging\n11. Push notifications\n12. QR login\n13. Security\n14. Storage\n\nIn order to implement your own module you have to follow the next steps:\n\n### 1. Add Smart Credentials core module as a dependency:\n```\nimplementation(\"de.telekom.smartcredentials:core:$smartCredentialsVersion\")\n```\n\n### 2. Implement the API interface from core module\n\nThe API interface exposes an unified and standard protocol for the Smart Credentials SDK, in regard to the the specific functionality you chose to extend.\n\n### 3. Use exposed classes \n\nIn the core module, beside the API, you will find different exposed classes for each module. They are intentionally left here for you in order to \nreuse the functionality and save a lot of time, or because they standardize some functionality or a way of declaring/delivering data.\n\nYou are advised to look over these classes before starting to extend a module and try to use these classes as much as you can.\n\n### 4. Expose your API implementation\n\nDon't forget to make you API implementation public to end-users and provide them with a way of creating an instance of your API implementation.\n\n### 5. Upload your artifact on a Maven repository (optional)\n\nFor a better user experience, integration and accessibility, we recommend to upload your artifacts on a Maven repository. You can use JFrog, jitpack or other publishing tools.\n\n### 6. Congratulations\nIf you followed all the steps above and provided a working implementation for the APIs, you should have your own Smart Credentials module!\n\n## Authors and acknowledgment\nMain contributors to the vision, the architecture, and code of SmartCredentials were: Jochen Klaffer, Zhiyun Ren, Axel Nennker and several others from the wallet projects under the auspices of Jörg Heuer.\n\n## License\n```\nThe code in this repository is licensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n   http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftelekom%2Fsmartcredentials-sdk-android","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftelekom%2Fsmartcredentials-sdk-android","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftelekom%2Fsmartcredentials-sdk-android/lists"}