bitshares / bitshares/bitshares-core
A new signal to allow api login requests through an external service
- Dominant language
- C++
- Stars
- 1.2k
- Forks
- 660
- Avg merge
- 8h 17m
- Merged PRs (30d)
- 26
Description
**User Story**
As a `bitshares node operator` I'd like to give the users the best experience.
In terms of `api_logins` the user is required to verify himself. Therefore the `bitshares blockchain` offers the `api_access_info`. This file is loaded on startup of the node. To add a new user and make the change available, the node has to be restarted. That is pretty inconvenient. It would be great if the change could take place dynamically.
More specifically some sort of signal, which is emitted when a user tries to log in. The signal destination can then be a plugin for example, we call that `external_service`, which then verifies the user and logs him in.
The `external_service` itself is not part of the issue.
**Impacts**
Describe which portion(s) of BitShares Core may be impacted by your request. Please tick at least one box.
- [X] API (the application programming interface)
- [ ] Build (the build process or something prior to compiled code)
- [ ] CLI (the command line wallet)
- [ ] Deployment (the deployment process after building such as Docker, Travis, etc.)
- [ ] DEX (the Decentralized EXchange, market engine, etc.)
- [ ] P2P (the peer-to-peer network for transaction/block propagation)
- [ ] Performance (system or user efficiency, etc.)
- [ ] Protocol (the blockchain logic, consensus, validation, etc.)
- [ ] Security (the security of system or user data, etc.)
- [X] UX (the User Experience)
- [ ] Other (please add below)
P.S.
My thoughts on this and a prototype implementation, which just serves testing purposes for myself can be found here: #2051
In my example I used the `external_service` only for the acquisition of the `api_access_info` and tried to reuse as much code as possible, hence I reused the `login_api::login` code, to avoid duplicate code. Maybe it's a good idea to make the verification also through the `external_service`, which would allow for custom verification schemes.
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by reviewing the prototype referenced in #2051 and the existing login_api::login flow, including how api_access_info is loaded. Trace where API login requests are handled and identify the appropriate signal or extension point. Done means login attempts can notify an external_service dynamically without requiring a node restart, while the external service itself remains out of scope.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- blockchain, cpp
- Domain
- api, authentication
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100