我已经使用“DocuSign APS.NET Core Web 应用程序”项目模板创建了一个作为服务部署在 Azure 中的功能,并且在通过我的本地计算机测试它时它工作正常。
但是,由于私钥错误,我在 Azure 中测试它时遇到了问题。我使用与本地主机测试中的字符串完全相同的字符串,并将其更改为具有不同的换行符转义字符。以下是我不断收到的错误消息:
-----END RSA PRIVATE KEY 未找到
适用于本地主机但不适用于 azure 的字符串具有以下字符串:
-----BEGIN RSA PRIVATE KEY-----\r\n********\r\n-----END RSA PRIVATE KEY-----
我还尝试了以下用于 azure 的字符串,但不起作用:
-----BEGIN RSA PRIVATE KEY-----
********
-----END RSA PRIVATE KEY-----
-----BEGIN RSA PRIVATE KEY-----
********
-----END RSA PRIVATE KEY-----
我还在应用程序设置配置中输入了换行符:
-----BEGIN RSA PRIVATE KEY-----
*********
-----END RSA PRIVATE KEY-----
我的代码使用模板提供的 JWTAuth.cs,如下所示:
public static class JWTAuth
{
/// <summary>
/// Uses Json Web Token (JWT) Authentication Method to obtain the necessary information needed to make API calls.
/// </summary>
/// <returns>A tuple containing the accessToken, accountId and baseUri</returns>
public static (string, string, string) AuthenticateWithJWT()
{
var apiClient = new ApiClient();
// Get environment variables
string ik = System.Environment.GetEnvironmentVariable("IntegrationKey", EnvironmentVariableTarget.Process);
string userId = System.Environment.GetEnvironmentVariable("userId", EnvironmentVariableTarget.Process);
string authServer = System.Environment.GetEnvironmentVariable("AuthServer", EnvironmentVariableTarget.Process);
string rsaKey = System.Environment.GetEnvironmentVariable("RSAKey", EnvironmentVariableTarget.Process);
OAuth.OAuthToken authToken = apiClient.RequestJWTUserToken(ik,
userId,
authServer,
Encoding.UTF8.GetBytes(rsaKey),
1);
//string path = "Resources/PrivateKey.pem";
//StreamReader pk = File.OpenText(path);
string accessToken = authToken.access_token;
apiClient.SetOAuthBasePath(authServer);
OAuth.UserInfo userInfo = apiClient.GetUserInfo(authToken.access_token);
Account acct = null;
var accounts = userInfo.Accounts;
{
acct = accounts.FirstOrDefault(a => a.IsDefault == "true");
}
string accountId = acct.AccountId;
string baseUri = acct.BaseUri + "/restapi";
return (accessToken, accountId, baseUri);
}
}
如果我可以解决此问题,我想将应用设置存储在 Azure 的密钥保管库中,作为我的下一步。
任何帮助将不胜感激。先感谢您。