微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

DocuSign .NET SDK - Esign DLL - 处理 Docusign 配置参数中关于错误的更改:“意外的 PEM 类型”

如何解决DocuSign .NET SDK - Esign DLL - 处理 Docusign 配置参数中关于错误的更改:“意外的 PEM 类型”

在 Esign 4.1.1 版本中,VS2019 Docusign 项目代码生成生成这种类型的配置文件

enter image description here

注意,开发者必须将DocuSign“快速入门”页面生成的私钥复制粘贴到VS2019 Docusign项目向导中。密钥转换为字符串,原始密钥文件中的每一行用一个回车表示。

以这种方式内联使用私钥值与所有其他参数非常方便。

这个“RSAKey”参数值确实适用于 4.1.1 版本。但是没有 5.2 版本。

在 Esign 5.2 版本中,我们现在使用的是 Asp.Net Core 3.1/.NET 5 风格的代码,所以我们现在有这样的配置文件格式:

enter image description here

这不适用于 Esign 5.2。我推测 5.2 中的变化是这样的 - Docusign 服务器生成密钥 file 的哈希值,如果外部客户端提交的密钥 file 生成的哈希值确实不匹配,则发回“未知 PEM 文件错误。我试图强调 DocuSign 服务器上的第一个“门”检查文件本身,而不是文件内的 RSA 密钥

如果为真,后果是我们现在必须用小孩手套处理密钥文件。如果我想从远程源存储/检索此文件,我需要非常小心,不要更改/添加/删除一个字节。这将需要仔细测试。从上面的示例 appsettings.json 中可以看出,为了获取物理文件,我不得不添加“KeyFilePath”参数,这意味着我必须始终将它放在我的项目中或能够远程加载它(完整字节)来自远程源。这大大增加了开发人员和维护人员的负担。

理想情况下,我们需要一种方法来获得将密钥文件作为字符串放回配置参数的能力。

任何想法表示赞赏。

解决方法

解决此问题的一种方法是使用 https://base64.guru/

使用“File-to-Base64”选项允许我在普通配置文件中将其作为字符串参数提供。

然后使用它的 C# 代码如下所示:

var cred = LoadDocusingConfigIntoObject();

byte[] buffer = Convert.FromBase64String(cred.PrivateKey);

                this.OAuthToken = docusignClient.RequestJWTUserToken(
                    cred.IntegrationKey,cred.ImpersonatedUserId,cred.AuthServer,buffer,1,scopes
                );

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?