Microsoft Dynamics CRMを実装しています(2010年または2011年のいずれかが100%確実ではありません)。このCRMシステムは、プラグインから内部サービスフレームワークサービスを呼び出す必要があります。
サービスフレームワークを呼び出すために、STSにアクセスしてセキュリティトークンを取得するログインメソッドを備えたAPIを使用します。これは、ユーザーが主張することを認証して取得するためのユーザーごとです。ログイン呼び出しは、Thread.CurrentPrincipalプロパティに配置したIPrincipalオブジェクトを返します。それ以降、フレームワークを使用してサービスを呼び出すことができ、実行中のスレッドのプリンシパルにより、呼び出しごとにユーザーが認証されます。
asp.net Webサイトでは、通常、ユーザーをログインしてすぐにSTSにアクセスしてトークンを取得し、セッション中のユーザーのためにそのトークンをキャッシュします。これは、サービスを呼び出すたびにログインを実行する必要がないためです。 。
CRMプラグインでこれを行うにはどうすればよいですか。ユーザーごとのセッションストアにアクセスできますか?IServiceProviderがパラメーターとして渡されることに気付きましたが、このコンテナーにサービスを追加して、ある種のスレッドセーフディクショナリを使用するサービスでこの問題を解決できますか?私はCRM開発についてほとんど知りませんが、プラグインがこれを行う正しい方法であるかどうかさえ疑問に思っていますか?