oauth - 如何在 SPA 中实施 Docusign,而不需要最终用户使用 DocuSign 进行身份验证
问题描述
我正在关注此处显示的 React OAuth Implicit 示例:https ://github.com/docusign/eg-02-react-implicit-grant我对我们的 React SPA 的最终用户应该如何感到困惑能够为自己创建一个信封,而无需访问我们的管理员帐户密码。
作为我们应用程序注册过程的一部分,我们让最终用户填写一份表格,该表格预先填写了一个信封,供他们通过 Docusign 签名。我们想象我们的 Docusign 管理员帐户会在幕后代表这些用户对我们的应用程序进行身份验证,从而使他们能够立即进入嵌入式签名仪式。
但是,在链接的示例中,最终用户会通过 Docusign UI 提示登录我们的管理员帐户,以便继续使用 Docusign 的 API 方法。
我们如何避免要求最终用户登录?或者在使用隐式授权模型时这是不可能的吗?
提前致谢。
解决方案
很好的问题。DocuSign 集成应用程序有许多用例:
用例:签名者正在使用您的应用
签名者不需要 DocuSign 帐户。只有签名请求的发送者需要一个帐户。
选项 1:使用 Powerform
处理此用例的最简单方法是使用DocuSign PowerForm。PowerForm 是由 DocuSign 系统隐式发送的 DocuSign 信封模板。然后,签名者可以用他们的姓名和其他详细信息填写表格,然后签署文件。
这是演示 Powerform 解决方案的视频。
您可以通过查询参数代表签名者填写表格。请参阅此SO 答案。将您的应用程序与 PowerForm 集成很容易,但信封的某些方面可能无法通过模板进行设置。有关如何设置用户完成签名后将被重定向到的 URL 的详细信息,请参阅本文。
选项 2:自己创建信封,然后让您的用户签名
一个更有能力的选择是让您的应用程序自己创建信封。您需要付费 DocuSign 用户的访问令牌才能发送信封。我不会使用系统管理员帐户,而只是普通的 DocuSign 帐户用户。
就像是:
- 在您的 DocuSign 帐户中创建一个用户,例如“HR@your_company.com”
- 设置后端(服务器应用程序)以使用 DocuSign JWT 身份验证来模拟 HR@your_company.com“用户”。请参阅提供多种语言的eg-01 系列代码示例。
- 编写您的 SPA 以创建信封本身(在从后端获取访问令牌之后)或使用私有 API 要求后端创建信封。创建信封后,获取签名仪式的 URL。
- 您的 SPA 现在将用户重定向到签名仪式(不要使用 iFrame)。用户签名后,她将与事件信息(她签名的)一起被重定向回您的 SPA。这方面的一个示例是 DocuSign 代码示例启动器 eg-03 系列中的嵌入式签名仪式工作流程(第一个工作流程)。这是Node.js 示例。
笔记。
- 不要使用 iFrame,因为 Signing Ceremony 需要整个屏幕。因为 SPA 可以通过 cookie 或本地存储在会话中保存状态,所以实际上并不需要 100% iFrame。
- 您可以将 DocuSign 签名仪式设置为 ping 您的服务器(AJAX pings)以保持会话活动、用作心跳等。
- 如果您让 SPA 创建信封,则需要设置 CORS 网关以使 SPA 能够与 DocuSign 云进行通信。这在 eg-02 示例的文章中有详细说明。
- 如上所述为签名者创建信封可让您最大限度地控制信封,包括可能包含附件文档、付款等。
用例:您的员工正在使用您的 SPA 应用程序
在这种情况下,您的员工可以通过 SPA 使用 DocuSign 进行身份验证,然后通过 SPA 和 DocuSign API 使用 DocuSign 进行任何身份验证。例如:
- 发送信封
- 发送信封,然后让签名者(亲自)在信封上签名。例如,银行员工允许亲自签名者开设账户的银行应用程序。
- 监控发送的信封
- 任何
这是 eg-02 React 示例演示的用例。
推荐阅读
- swift - AVPlayer,播放当前正在写入的本地文件 URL?
- java - Android 签名 JKS 密钥库已损坏
- javascript - javascript中的Memoization和Cache函数执行是否相同?
- ansible - ansible:如何从链接目录复制文件
- java - Dialogflow v2 Java 客户端库 detectIntent 与 Eclipse 上的 Spring Boot
- c# - .NET Core - 即使在启用 CORS 后也会出现 CORS 错误
- ftp - 如何将端点作为参数传递给 Ballerina 中的函数
- java - 使用 import 语句将实例成员(非静态成员)从一个类导入另一个类
- matlab - 如何在 MATLAB 中计算水平(或垂直)投影?
- python - 向现有模块方法手动添加回调的正确方法是什么?