ma1uta / ma1sd

Federated Matrix Identity Server (formerly fork of kamax/mxisd)
GNU Affero General Public License v3.0
165 stars 55 forks source link

Document how to create new identity stores #42

Open bmiller59 opened 4 years ago

bmiller59 commented 4 years ago

Hello. Thanks for this identity server! Very helpful.

I would like to create a new identity store to authenticate against cryptocurrency wallets (e.g. Ethereum) using blockchain addresses as 3PIDs. I have reviewed all of the documentation I could find, but unfortunately, it does not seem like any of the existing stores can be used for this purpose as far as I can tell. (e.g. store documentation)

Could you provide documentation how to create and integrate a new identity store like this? Perhaps it would be best to make a general purpose "browser store" to allow for arbitrary in-browser verifications, which in this case could involve demonstrating the ability to sign something with the private key associated with their blockchain address. (Here is a library to do this from metamask, for example: https://github.com/metamask/eth-sig-util)

A side question: I am not a java programmer, so would it be possible to allow for new "plugin" stores to be added that might be written in an arbitrary language and perhaps exposed as another service on another port? Or some other method?

Thanks for any guidance or documentation.

bmiller59 commented 4 years ago

While I still think an extensible "plugin" framework for other identity stores would be beneficial, in my case I am realizing that it should be possible to implement something using the existing Webservice store by simply setting up a server that handles the in-browser verification of the ownership of the private key and reports back to m1sd. If you think that is the right way to go, please let me know. Thanks.