2

Azure 上の 2 つの Web アプリ (運用バージョンと運用前バージョン) にデプロイされた Web サイトがあります。

Web サイトは、ある時点で、以下のコードを使用して RSA キーをホストするコンテナーを作成します。

// -----------------------------
// Part 1 : Initialize csp params
// -----------------------------
const int PROVIDER_RSA_FULL = 1;
const string CONTAINER_NAME = "OurKeyContainer";
CspParameters cspParams;
cspParams = new CspParameters(PROVIDER_RSA_FULL);
cspParams.KeyContainerName = CONTAINER_NAME;
cspParams.Flags = CspProviderFlags.UseMachineKeyStore;
cspParams.ProviderName = "Microsoft Strong Cryptographic Provider";

// --------------------------------------------------
// Part 2 : A try to set folder access rights to "everyone"
// --------------------------------------------------
// http://whowish-programming.blogspot.fr/2010/10/systemsecuritycryptographycryptographic.html
// http://stackoverflow.com/questions/5013881/c-sharp-how-do-i-get-the-everybody-user
var sid = new SecurityIdentifier(WellKnownSidType.WorldSid, null);
var rule = new CryptoKeyAccessRule(sid, CryptoKeyRights.FullControl, AccessControlType.Allow);
cspParams.CryptoKeySecurity = new CryptoKeySecurity();
cspParams.CryptoKeySecurity.SetAccessRule(rule);

return new RSACryptoServiceProvider(cspParams);

問題は、このコードが実際に最初に立ち上げられた Web サイトの 1 つに対してのみ機能することです。2 つ目は、CryptographicException "Object already exists" をスローしました。

グーグルで検索した結果、この問題は、キー コンテナーにアクセスする権限のないユーザーが Web サイトを実行していることが原因であると思われますが、残念ながら、推奨される修正 (上記のコードのパート 2 で実装) は機能しません。

アイデアやアドバイスはありますか?

ありがとう

りあな

4

1 に答える 1