代码之家  ›  专栏  ›  技术社区  ›  Maksim Gumerov

帐户和应用程序集成中的许多用户

  •  1
  • Maksim Gumerov  · 技术社区  · 7 年前

    在执行授权码授权认证时,DocuSign请求同意。就我所理解的文档而言,它隐含着用户的同意。当第一次请求同意时,用户需要输入其凭据。当下次被问到时,暗示的是同一个用户。

    但是考虑一下:我的演示帐户wwproj.dev@gmail.com中列出了3个用户:wwproj.dev@gmail.com本人,以及mary@inbox.ru和mike@inbox.ru。

    我需要知道两件事:

    1)在进行代码授权时,我是否可以静态地指定用户(例如,通过他的“api用户名”),这样用户只需按下一些“确定”按钮(也可以输入他的密码,但不输入用户名),这是可能的吗?否则,我的应用程序中可能会有“Mike”和“Mary”用户,而我的DocuSign帐户中也有这些用户;然后,我的应用程序的“Mike”用户会启动一些操作,但在请求同意时,“Mary”会输入她的DocuSign凭据并给予同意。我想得到迈克的同意!例如,我可以在我的应用程序中将Mike的API用户名存储在他的帐户中,并在授予授权时使用它。但是,据我所见,在授权代码请求中,用户的登录名和API用户名都没有发送到DocuSign,所以我不知道如何实现我想要的。

    2) 下次询问时,暗示同一用户 -那可能是个问题。如果我的前一段中的“Mike”在DocuSign要求时输入了他的证书并给予了他的同意,然后他从我的申请中注销,而Mary则登录并开始了一些涉及DocuSign的操作,DocuSign会认为这仍然是Mike的会话吗?我如何确保这不会发生?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Larry K    7 年前

    我不理解你问题中“暗示”的用法。下面是它的工作原理。如果您还有其他问题,请更新(编辑)您的原始问题。

    当使用授权代码grant时,用户首先对docuSign进行身份验证。

    然后,如果他以前没有这样做,他被要求同意整合。集成请求的权限是集成的 作用域 . 通常的范围是 签名 可能还有其他的。

    在用户同意后,DocuSign授权服务会将用户的浏览器重定向回集成,并将授权代码作为查询参数。

    然后,您的集成会对DocuSign进行OAuth调用,以交换访问令牌的授权代码。

    接下来(通常),您的集成使用 OAuth::getUserInfo 方法从DocuSign获取用户名、电子邮件、授权DocuSign帐户等。

    确保应用程序的用户是DocuSign用户

    您不能强制谁使用DocuSign进行身份验证。但是你可以检查一下是否是正确的人认证的。例如:

    1. Mike登录到你的应用程序。你知道迈克的电子邮件。
    2. 您的应用程序希望其用户使用DocuSign进行身份验证。您的应用程序使用DocuSign启动OAuth授权代码授予流。
    3. 你的应用程序用户现在看到DocuSign登录屏幕。
    4. (问题)是迈克让玛丽为他向DocuSign认证。玛丽这样做了。
    5. 但是,当你的应用程序得知DocuSign认证用户的电子邮件地址时,它将是Mary的电子邮件地址,而不是Mike的电子邮件地址。因此你的应用程序可以通过向用户发送一条消息来拒绝DocuSign认证。 迈克 必须通过DocuSign重新验证。

    通过实现上述功能,您的应用程序可以保证当Mike登录到您的应用程序时,与DocuSign匹配的身份验证将是Mike的DocuSign用户帐户,而不是其他人的帐户。

    与比较电子邮件地址不同,您也可以使用DocuSign用户ID。但是这样做需要您完成一个步骤,即将应用程序加载到一个表中,该表将Mike的帐户与其DocuSign用户ID相关联。电子邮件地址可能更容易。

    回复:其他人在上一个会话后登录

    有两种情况:

    同一台机器上的同一个浏览器

    这是“公共计算机问题”。

    Mike使用浏览器“G”登录到你的应用程序和DocuSign。后来,玛丽坐到他的座位上,使用同一个浏览器和同一个应用程序。

    默认情况下,DocuSign的OAuth身份验证代码grant启用静默身份验证。这意味着DocuSign身份验证流将静默地使Mary能够使用Mike的DocuSign会话(如果它仍然处于活动状态)。对于公共机器场景,这显然是不好的。解决:

    1. 始终要求DocuSign主动对此人进行身份验证(不允许进行静默身份验证)。为此,包括 prompt=login 在发送到DocuSign的初始URL中。见 docs .

    2. 清除用户之间的浏览器cookie。处理公共计算机的标准方法将包括这一点。

    同一应用上的不同用户

    你的应用程序应该使用会话。应用程序的每个用户(并行或顺序)将获得自己的会话。每个会话都应该维护自己的docuSign身份验证信息,包括当前用户的访问令牌、帐户ID和基URL。

    所有这些信息都被确定为DocuSign过程认证的一部分。

    如今,所有现代的Web应用程序框架都提供了易于使用的会话接口。

    我们还有一些您可以使用的代码示例。 See this repository list. (路上还有更多。)