Я создал функцию как службу для развертывания в Azure с использованием шаблона проекта «DocuSign APS. NET Базовое веб-приложение», и он отлично работает при тестировании на моей локальной машине.
Однако при тестировании в Azure возникают проблемы из-за ошибки закрытого ключа. Я использую в точности ту же строку, что и в тестировании локального хоста, а также изменяю ее, чтобы иметь различные escape-символы для разрывов строк. Далее я получаю сообщение об ошибке:
----- 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.
Любая помощь будет принята с благодарностью. Заранее спасибо.