与jwt

时间:2018-04-04 11:47:44

标签: c# authentication asp.net-core docusignapi

我想用jwt flow实现DocuSign Service集成认证。

我已生成有效的jwt(在jwt.io上验证),我可以根据https://docs.docusign.com/esign/guide/authentication/oa2_jwt.html#requesting-the-access-token

成功获取基于jwt的访问令牌

我在这篇博文中发现:https://www.docusign.com/blog/dsdev-docusign-developers-look-inside-new-authentication-apis/如果应用程序代表系统中的用户(我需要),则应省略子声明:

  

sub:您要为其提供令牌的委托人的用户ID。如果省略,将发出令牌以表示应用程序本身而不是系统中的用户。必填:否

但是在下一步“获取基本URI”中指出:

  

获取访问令牌后,首先应该使用/ oauth / userinfo端点来获取用于访问DocuSign API的用户帐户和基本URI信息。

     

GET / oauth / userinfo授权:Bearer eyJ0eX ... AnHDQ0bbA

失败,状态代码401未经授权,回复正文详情:

{
    "error": "internal_server_error",
    "reference_id": "e051ca48-....f0f"
}

我还尝试调用Login(来自AuthenticationApi - DocuSign.NetCore 1.1.0 nuget包),默认授权标头包含一个访问令牌,如下所示:

        Configuration.Default.DefaultHeader.Add("Authorization", string.Format("Bearer {0}", accessToken));
        AuthenticationApi authApi = new AuthenticationApi(Configuration.Default);            
        LoginInformation loginInfo = authApi.Login();

上面的代码只有在我使用可直接从api explorer获取的OAuth2访问令牌时才有效: https://apiexplorer.docusign.com/#/esign/restapi?categories=Authentication&tags=Authentication&operations=login&mode=basic 但是当我使用我通过以下官方文档(如上所述)获得的访问令牌时,我得到例外:

  

DocuSign.eSign.Client.ApiException:'调用登录时出错:{       “errorCode”:“USER_AUTHENTICATION_FAILED”,       “message”:“用户名和密码中的一个或两个无效。访问令牌无效“。

似乎我错过了什么?

2 个答案:

答案 0 :(得分:1)

忽略sub尚未实施,这是一个尚未实施的未来状态。截至目前,您始终需要在呼叫中传递sub,并且您只能为用户获取Accesstoken。这是一个博客链接,其中概述了新OAUTH即将发布的内容,但目前实施的内容可在DS Docs

获取

答案 1 :(得分:1)

正如Amit所说,你需要提供一个userID(guid格式)。您收到Consent Required这一事实是个好消息:您几乎就在那里。

您的用户可以单独授予同意,或者如果您启用了org管理员,则可以在组织级别授予一揽子同意。

请参阅我的videoblog post了解如何单独授予同意。