我的想法是使用可验证的凭据登录到我的Kotlin Android应用程序。为此,我使用Aries Cloud Agent (ca-py)。为了与代理通信,有一个API。这个代理可以在钱包(lissi, trinsic, esatus等)和代理之间创建连接,然后发送证明请求。来自证明请求的数据(可验证的凭据,例如名、姓、电子邮件)将用于登录。
每个步骤都需要特定的API请求。可以将每个步骤实现为单独的按钮。在这种情况下,用户应该首先按下按钮,创建可以从钱包中扫描的二维码,从而建立连接。之后应按第二个按钮发送证明请求。一旦提供凭据,应该按下第三个按钮,以便应用程序通过GET请求从代理获取该信息。然而,我的想法是使整个过程自动化。
这可以使用代理webhook来完成,一旦有一个新的连接创建,它可以通知应用程序,并且可以用作触发器来发送第二个证明请求。发送证明请求后也会发生同样的情况。然而,我不确定如何实现推送通知到我的应用程序一旦有一个新的webhook。
我读到它可以用Firebase和AWS Amplify来完成。在这两种情况下,我认为应该付钱,说实话,我对他们的服务不太熟悉。有其他选择吗?有人知道什么免费的替代方案吗?目前我的想法只是建立一个像原型,所以没有必要生产服务。提前感谢!
web hook基本上是一个面向外部的URL,它可以接受有效负载等。您可以使用云功能onRequest
创建这些端点。它们使用基于express的请求/响应回调
- https://firebase.google.com/docs/reference/functions/providers_https_ onrequest
- http://expressjs.com/en/4x/api.html res
例如:从客户端来看,创建一个动态链接或云功能URL,可以呈现为QR码a B C,并从那里:一系列的URL和动态链接的每一步的方式。当这个进程进行时,用户的客户端可以从Firebase获得实时更新,允许你用当前的进程和指令更新用户。
- https://firebase.google.com/docs/database/web/read-and-write web-v8_2
主旨是将流程与一次性令牌相关联,以便您的webhook可以知道流程可以跟随哪个用户。你可以使用用户的ID,但如果任何webhook端点被暴露,这可以被预测和欺骗。
实时数据库:
processing: // location for all clients processing can listen to for updates
+userId: { // userID so that the location is predictable should the client disconnect
+--"State": "state1",
+--"URL":"https://url.for.qr/code?=disposable_token"
}
status: // location for all webhook processing and tracking of stats
+token: { // userID so that the outcome is predictable should the client disconnect
+--"User": "userID",
+--"stage":"authenticating"
+--"createdAt":"Date.now()"// track when the process started, ensure that requests can expire after X minutes/hours
}
对于客户端,按钮按下可以完全自动化与实时数据库侦听器