如何正确设置DocuSIgn oAuth2流程

时间:2015-09-03 13:34:29

标签: docusignapi

我对你的API的OAuth2过程感到很困惑。在文档中它说“客户端应用程序应显示UI以提示用户输入电子邮件/密码,并且有责任保留信息保密,不在本地存储。“

我的观点是OAuth2的目的在这里没有实现。客户端应用程序不应关心用户的电子邮件和密码。 DocuSign表示不要在本地存储密码!如果任何客户开发了一个存储用户密码并为DocuSign用户创建安全威胁的应用程序,该怎么办?

我使用OAuth2身份验证使用了几个API,这是我第一次遇到不同的流程。能否请你告诉我如何实际应用这个,你能举例说明吗?

以下是我们的应用程序的工作原理。它连接docusigns用户,我们将保留他们的access_tokens,我们将使用它代表他们发送自定义信封/小部件。我们不想使用我们的域名询问用户的电子邮件和密码。

我不认为我走在正确的轨道上,我有点困惑,我需要你的协助。

1 个答案:

答案 0 :(得分:1)

关键问题是当前DocuSign REST API OAuth2功能支持单点登录。

相反,OAuth2功能使您的DocuSign客户端应用程序不会存储明确的用户名/密码对,以代表指定用户使用API​​进行身份验证。

另一方面,"代表他人发送" (SOBO)还使应用程序不会存储将发送交易(信封)的其他人的用户名/ pw。相反,您将一个用户名指定为"验证用户"。 More info.

所以这一切都取决于你的用例。请记住,API通常用于发送事务以进行签名,而不是签署文档。您可以作为"系统用户"或者您可以代表帐户中的其他用户发送邮件。

要取消客户端应用程序存储用户名/ pw的需要,您的应用可以:

  1. 从人类
  2. 申请用户名/ pw
  3. Obtain an OAuth2 token.
  4. 忘记用户名/ pw
  5. 在后续API调用中使用令牌而不是用户名/ pw对。令牌不会过期,因此可以无限制地存储和使用。 (用户可以通过DocuSign Web界面或API明确撤销它。)
  6. 对于您的用例:

      

    以下是我们的应用程序的工作原理。它连接DocuSigns用户,我们将保留他们的access_tokens,我们将使用它代表他们发送自定义信封/小部件。我们不想使用我们的域名向用户询问电子邮件和密码。

    听起来你的应用应该有一个"认证用户"最终用户所属的每个帐户。 (您不能说明您的所有用户是否在同一帐户中。)通常,DocuSign的每个公司/客户都有一个帐户供其所有用户使用。但是,由于各种原因,许多DocuSign客户确实拥有多个帐户。个人用户可以属于多个帐户。

    验证用户将代表(SOBO)发送最终用户。在这种情况下,您不需要知道用户的pw。 (你不会持有他们的OAuth2令牌,也不需要请求他们的pw。)

    但您确实需要他们的电子邮件(他们在DocuSign中的用户名)。大概你的应用程序有这些信息。

    此外,您需要决定如何在DocuSign中配置发送用户帐户。您可以假设该帐户存在,然后在没有这种情况时优雅地处理该案例。

    或者您可以通过API在帐户中配置用户。 Create_user method.

    此外,用户是否会直接登录DocuSign?如果是这样,那么用户可能希望使用DocuSign实施SSO。 DocuSign SSO使用SAML。

    <强>加

    如果您使用SOBO认证用户的想法,那么请将认证用户视为您应用的系统用户(但每个DocuSign帐户需要一个)。系统用户的凭据通常包含在配置文件中,您仍然可以执行此操作。或者,您可以在安装时为系统用户创建令牌 - 管理员将添加名称/ pw。无需向普通用户询问密码。

    对于任何适用于任何DocuSign 发件人的应用程序,在任何帐户中,通常您都有一个配置步骤&#34;添加&#34;应用程序到新帐户。这将是一个管理步骤,由管理员完成。您的sw会指示管理员为新帐户创建一个身份验证用户,然后输入该用户的电子邮件/ pw。

    如果您的应用只是将您的应用中的签名请求(甚至只是收到确认请求的消息)发送给与您的应用相关联的任何随机人员,请记住签名是免费的 - 收件人用户不需要帐户的DocuSign。

    如果您的客户希望&#34;发送&#34;签署请求(通过您的应用程序)并在他们的帐户等中查看它们,然后听起来您想要为每个客户使用SOBO和经过身份验证的用户&#39;配置帐户。请注意first paragraph in this doc

    不使用SOBO 您还可以按如下方式规划应用:

    1. Joe用户向您的应用指出他有一个DocuSign帐户,并希望您的应用代表他们发送。
    2. 您在令牌商店中查找。如果您有Joe的令牌,则使用它。如果您不这样做,那么您告诉Joe他必须配置您的应用程序以使用他的DocuSign帐户。要做到这一点,你需要他一次输入他的DS电子邮件/ pw。
    3. 您使用Joe存储的令牌将签名请求作为 Joe发送。
    4. 你是对的,这个流程可能会出现信任问题。为了最大限度地减少您需要发送DocuSign电子邮件/邮件的频率,我请使用验证用户+ SOBO。这样,只有在将DocuSign帐户添加到您的系统时,您才需要询问一次。

      添加了更多 如果您的客户,他们的DocuSign帐户稀疏(换句话说,您的客户通常没有共同的DocuSign帐户),那么我会选择更简单的非SOBO流程。

      为什么呢?更方便您的客户。如果他们是DocuSign帐户中唯一使用您的应用程序的人,那么在帐户级别进行配置步骤几乎没有意义。

      你的一些客户可能会问你,#34;为什么你不使用OAuth2?&#34;答案是DocuSign API还不支持它。

      最终添加

      DocuSign REST API中对OAuth2的DocuSign支持:正如docs所说:

        

      资源所有者密码授予是DocuSign REST API中唯一支持的OAuth2流程。这允许客户端应用程序通过为用户显示用户名,密码和集成商密钥,直接从REST API获取访问令牌。获得访问令牌后,它将在API调用中使用,而不是用户名/密码/集成键组合。

      有关SOBO的信息,请参阅docs 1, docs 2docs 3。如果您对SOBO有其他疑问,请打开一个新的StackOverflow问题。