2009-04-26 10 views
3

部分的に信頼できる環境で実行されているコードから.Net interopを使用してCOM APIなどのアンマネージコードを呼び出す正しい方法は何ですか?部分的に信頼できるコードからアンマネージコードを呼び出す正しい方法

Microsoft SharePoint用のASP.Net WebPartを開発する際に、COM APIを通じて別のシステムと通信する必要がありました。私はSharePointの権限を完全に変更することで、この問題を一時的に解決しました。後で、SharePoint UnmanagedCode権限を与える最小限の設定の上にカスタムセキュリティを実装することでこれを洗練しましたが、管理されていないコードがCASの残りの部分をスキップできるため、これは大きな改善ではありません。

私が収集したことから、部分的に信頼できる呼び出し元を許可し、管理対象ドメインと非管理対象ドメインの間のレイヤーとして機能する、完全に信頼できるアセンブリが必要になることがあります。また、部分的に信頼できるコードが完全に信頼できるコードを呼び出すことを可能にするいくつかの余分な設定が必要であると考えています。

正しい方法と実際にそれを実装する方法は何ですか?

答えて

3

はい、部分的に信頼できる呼び出し元を許可し、管理ドメインと非管理ドメインの間のレイヤーとして機能する、完全に信頼できるアセンブリが必要です。

あなたが部分的に信頼されたコードと対話したり、部分的に信頼されたコンテキストで動作しなければならないコードを書く場合は、次の要因を考慮する必要があります。

  • ライブラリがで共有するために、厳密な名前で署名する必要があります複数のアプリケーション。強力な名前を使用すると、コードをグローバルアセンブリキャッシュに配置することができ、消費者は特定のモバイルコードが実際にあなたのものであることを検証できます。
  • デフォルトでは、強力な名前の共有ライブラリは、ライブラリ作成者が何もしなくても完全な信頼を得るために暗黙のLinkDemandを自動的に実行します。
  • 呼び出し元が完全に信頼されていないにもかかわらず、そのようなライブラリを呼び出そうとした場合、ランタイムはSecurityExceptionをスローし、呼び出し元はライブラリへのリンクを許可されません。
  • 自動LinkDemandを無効にして例外がスローされないようにするには、AllowPartiallyTrustedCallersAttribute属性を共有ライブラリのアセンブリスコープに配置します。この属性を使用すると、部分的に信頼できる管理コードからライブラリを呼び出すことができます。
  • この属性を持つライブラリへのアクセスが許可されている部分的に信頼されたコードは、ローカルマシンポリシーで定義されたさらなる制限の対象です。
  • 部分的に信頼できるコードがAllowPartiallyTrustedCallersAttribute属性を持たないライブラリを呼び出すプログラム方法はありません。アプリケーションがデフォルトで完全な信頼を受け取らない場合、管理者はそのようなライブラリを呼び出す前にセキュリティポリシーを変更し、アプリケーションに完全な信頼を与えることを選択する必要があります。

出典: MSDN: Using Libraries from Partially Trusted Code

+0

ありがとう!どのように私はそれを逃したのだろうか。私はちょうど部分的に信頼されていない部分に集中していると思う。 –

1

呼び出すコードには、UnmanagedCode権限が必要です。その部分はやむをえない。問題は、UnmanagedCodeパーミッションを持つコードにどうやって行くのでしょうか?残念ながら、私はWebPart/SharePointとその制限について十分にはわかりません。

関連する問題