执行授权码授予验证时,Docusign征求同意。据我了解文档,这暗示着用户的同意。首次征得同意时,要求用户输入其凭据。下次询问时,隐含同一用户。
但是请考虑以下问题:我的演示帐户wowproj.dev@gmail.com中列出了3个用户:wowproj.dev@gmail.com本人,Mary@inbox.ru和Mike@inbox.ru。
我需要知道两件事:
1)在执行代码授权时是否可以静态指定用户(例如,通过其“ api用户名”),以便用户仅需按一些“确定”按钮即可(也许也输入密码),但不能用户名)-可以吗?否则,我的应用程序中可能会有用户“ Mike”和“ Mary”,而我的Docusign帐户中也有这些用户;然后我的应用程序的“迈克”用户开始执行某些操作,但是当征求同意时,“玛丽”输入其Docusign凭据并表示同意。我希望得到迈克的同意!例如,我可以将Mike的api用户名存储在我的应用程序的他的帐户中,并在授予授权中使用它。但是,据我所知,用户的登录名和他的api用户名都不会在授权代码请求中发送到Docusign,所以我看不到如何实现我想要的。
2)下一次询问时,暗示同一用户-这可能是一个问题。如果在Docusign的询问下我的上一段中的“ Mike”输入了自己的凭据并表示同意,然后他退出了我的应用程序,而Mary登录并开始了涉及Docusign的某些操作,该怎么办? Docusign会假设仍然是Mike的会议吗?我如何确保不会发生这种情况?
答案 0 :(得分:2)
我不理解您的问题对“暗示”的使用。运作方式如下。如果您还有其他问题,请更新(编辑)您的原始问题。
使用授权码授予时,用户首先向DocuSign进行身份验证。
然后,如果他以前从未这样做过,则要求他同意集成。集成请求的权限是集成的作用域。通常的范围是签名,可以有其他范围。
在他同意后,DocuSign授权服务会将用户的浏览器重定向回集成,并且将包含授权码作为查询参数。
然后,您的集成对DocuSign进行了oauth调用,以将授权代码交换为访问令牌。
下一步(通常),您的集成使用OAuth::getUserInfo方法从DocuSign获取用户名,电子邮件,授权的DocuSign帐户等。
您不能强迫谁将通过DocuSign进行身份验证。但是您可以检查对的人进行了身份验证。例如:
通过实施上述操作,您的应用程序可以保证当Mike登录到您的应用程序时,与DocuSign匹配的身份验证将是Mike的DocuSign用户帐户,而不是其他人的。
除了比较电子邮件地址,您还可以使用DocuSign用户ID。但是,这样做需要您完成一个将表加载到应用程序中的步骤,该表将Mike的帐户及其DocuSign用户ID关联起来。电子邮件地址可能更容易。
有两种情况:
这是“公用计算机问题”。
Mike使用浏览器“ G”登录到您的应用程序以及DocuSign。后来,玛丽滑入他的座位,并使用相同的浏览器和相同的应用程序。
默认情况下,DocuSign的OAuth身份验证代码授权会启用静默身份验证。这意味着DocuSign身份验证流将使Mary默默使用Mike的DocuSign会话(如果仍处于活动状态)。对于公共机器场景,这显然不是很好。解决方案:
始终要求DocuSign主动对人员进行身份验证(不允许静默身份验证)。为此,请在发送到DocuSign的初始URL中包含prompt=login
。参见docs。
清除用户之间的浏览器cookie。处理公用计算机的标准方法将包括此。
您的应用应使用会话。应用程序的每个用户(并行或顺序)都将获得自己的会话。每个会话应维护其自己的DocuSign身份验证信息,包括当前用户的访问令牌,帐户ID和基本URL。
所有这些信息都确定为“ DocuSign身份验证”过程的一部分。
如今,所有现代Web应用程序框架都提供了易于使用的会话界面。
我们还有可供您使用的代码示例。 See this repository list.(更多内容即将推出。)