2016-10-19 2 views
0

ダイナミクスCRMにプラグインを作成しました。このプラグインは、AzureクラウドにデプロイされているいくつかのWeb API 2メソッド(HTTPS経由)にアクセスします。このプラグインは、CRM内の連絡先データが変更されたときにトリガされます。多くのCRMアカウント保有者が連絡先データを更新します。動的APIを認証するWeb API 2のメソッドにアクセスするためのCRMプラグイン

プラグインで「秘密鍵」(一度生成Guid)をハードコードし、Web APIメソッドにアクセスするたびにこの鍵を送信します。権限のないアクセスを防ぐために、Web APIのメソッドでこのGUIDを検証します。

秘密鍵(guid)をソースコードに保存したくありません。

質問

  1. 「ハードコード」秘密鍵にしたくない場合は、私の選択肢は何ですか?
  2. このアプローチのセキュリティ上の欠陥は何ですか?

注一般的に

は、すべて私のWeb APIは、カスタム認証ウェブAPIフィルタによって認証されますが、プラグインからアクセスしているWeb APIは、カスタム認証の一部ではありません。

CRMバージョンは2013です。

答えて

2

前の回答の状態から、最初のオプションは、プラグインから取得できる設定カスタムエンティティに情報を保存することです。これらのレコードはCRMセキュリティモデルによって保護されるため、プラグインが呼び出し側のコンテキストで実行されている場合は、ユーザーがその情報を読む権限を持っているかどうかを確認する必要があります。管理者のコンテキストで実行されます。

別のオプションは、Secure/Unsecure Configurationを使用することです: enter image description here 者は、手順の中に設定することができますし、プラグインからそれらを読み取ることができます2(文字列)パラメータです。私は安全な設定があなたの要件に合っているが、一見を与えると言うでしょう。また、実装方法も簡単に見つけることができます(example)。

私が考えることができる最後のオプションは、XML WebResourceを作成してプラグインから読み込むことです。ここでも、プラグインの下のユーザーコンテキストが実行中であることを確認する必要があります。

1

このアプローチは安全とは考えられません。

CRMからプラグインアセンブリを抽出することは可能です。誰かがアセンブリを分解してGuidを見つけることができます。効果的にパスワードはプレーンテキストで保存されます。

少なくとも、CRMレコードにユーザー名/パスワード/秘密鍵を格納することができます。 CRMレコードは、CRMセキュリティで保護することができます。

「通常」の認証を実装する方がよいでしょう。

関連する問題