Я использую Этот класс GoogleJsonWebToken
для создания токена доступа, который будет использоваться с json-вызовами в API календаря Google. Он отлично работает в IIS Express на моей машине dev, когда я использую следующее (используя мой фактический адрес электронной почты службы):
string p12Path = HttpContext.Current.Server.MapPath("~/App_Data/certificate.p12");
var auth = GoogleJsonWebToken.GetAccessToken("[email protected]",
p12Path,
"https://www.googleapis.com/auth/calendar");
string Token = auth["access_token"];
Чтобы проверить это, я просто вызываю @Token
в моем представлении бритвы cshtml. Когда я публикую это на своем веб-сайте Azure, он не работает. Если я оставлю класс GoogleJsonWebToken
немодифицированным, я получаю очень бесполезный 502 - Web server received an invalid response while acting as a gateway or proxy server.
без какой-либо другой информации.
После некоторых поисковых запросов Google я нашел этот SO сообщение, что является аналогичной проблемой. Поэтому я попробовал их решение, я получаю System.Security.Cryptography.CryptographicException: The system cannot find the file specified.
, когда это выполняется с моего сайта Azure. Когда он запускается с моей машины dev, я получаю System.Net.WebException: The remote server returned an error: (400) Bad Request.
, который, как я думаю, потому, что с этим решением CspKeyContainerInfo.KeyContainerName
есть null
, тогда как исходный немодифицированный класс при запуске на моей машине dev дает мне что-то вроде {C0E26DC5-5D2C-4C77-8E40-79560F519588}
, которое случайно генерируется каждый раз, и это значение используется в процессе подписания подписи.
Затем я нашел эту запись SO, но это решение дало те же результаты, что и последнее решение.
Я также пробовал большинство различных комбинаций X509KeyStorageFlags
безрезультатно.
Как я могу либо сгенерировать CspKeyContainerInfo.KeyContainerName
сам, либо иначе успешно сгенерировать X509Certificate2
?