DocuSign:对于Angular应用程序-为什么OAuth重定向URL不能包含片段指示符(#)?

最后发布: 2019-07-19 06:59:31


问题

我有一个前端应用程序,其URL看起来像http://localhost:4200/#/dashboard >身份验证完成后,也应称为重定向URL。 不幸的是,当应用程序重定向到DocuSign登录页面时,我注意到重定向URL中位于#之后的部分被截断了。 是虫子吗? 我该如何省略?

在DocuSign面板中,我将重定向URL设置为: http://localhost:4200/#/dashboard我重定向到DocuSign进行登录的URL看起来像: https://account-d.docusign.com/oauth/auth?response_type=code&scope=signature&client_id={integrator_key}&redirect_uri=http://localhost:4200/#/dashboard ://account-d.docusign.com/oauth/auth?response_type https://account-d.docusign.com/oauth/auth?response_type=code&scope=signature&client_id={integrator_key}&redirect_uri=http://localhost:4200/#/dashboard DocuSign构造的URL(包括重定向URL)如下: https://account-d.docusign.com/oauth/auth?response_type=code&scope=signature&client_id={integrator_key}&redirect_uri=http://localhost:4200/piggyagent#/username : https://account-d.docusign.com/oauth/auth?response_type=code&scope=signature&client_id={integrator_key}&redirect_uri=http://localhost:4200/piggyagent#/username#结束后没有东西The provided customer ID is not registered in the DocuSign service.

angular redirect hash docusignapi
回答

这是不允许的每OAuth的v2规范,你可以在这里找到- https://www.oauth.com/oauth2-servers/redirect-uris/redirect-uri-registration/它说“已注册的重定向网址可能包含查询字符串参数,但片段中不得包含任何内容。如果开发人员尝试注册包含片段的重定向URL,注册服务器应拒绝该请求。”

您可以使用状态来传递信息,然后在代码的另一侧再次重定向。


回答

仅当应用程序包含可以保护client_id的密钥的后端服务器时,才可以使用授权码授予流程。 这就是为什么重定向URL不能包含片段。

如果没有后端服务器,则必须使用Implicit Grant流 它使用url的片段(#)部分将访问令牌返回给客户端(您的仅前端Angular应用)。