XRM ツールを使用すると、接続文字列を使用して Dataverse 環境に接続できます。 この方法は、 SQL Server で使用される接続文字列の概念に似ています。 構成ファイルは、セキュリティを最大限に高めるために構成セクションを暗号化する機能など、接続文字列をネイティブにサポートします。 この機能を使用すると、デプロイ時に Dataverse 接続を構成でき、アプリケーションでハード コーディングすることはできません。
アプリケーション コードでの接続文字列の使用については、次の重要な情報をお読みください。
重要
Microsoft では、利用可能な最も安全な認証フローを使用することをお勧めします。 この記事で説明する認証フローは、アプリケーションに対する非常に高い信頼を必要とし、他のフローには存在しないリスクを伴います。 このフローは、マネージド ID など、他のより安全なフローが実行できない場合にのみ使用してください。
接続文字列の作成
次の例に示すように、プロジェクトの app.config または web.config ファイルに接続文字列を指定します。
<connectionStrings>
<add name="MyCDSServer" connectionString="AuthType=OAuth;Username=jsmith@contoso.onmicrosoft.com;Password=passcode;Url=https://contosotest.crm.dynamics.com;AppId=51f81489-12ee-4a9e-aaae-a2591f45987d;RedirectUri=app://58145B91-0C36-4500-8554-080854F2AC97;TokenCacheStorePath=c:\MyTokenCache;LoginPrompt=Auto"/>
</connectionStrings>
重要
アカウント パスワードなどの機密情報を app.config または web.config fileに追加する場合は、適切なセキュリティ対策を講じて情報を保護してください。
接続文字列を作成した後、それを使用して CrmServiceClient オブジェクトを作成します。
//Use the connection string named "MyCDSServer"
//from the configuration file
CrmServiceClient svc = new CrmServiceClient(ConnectionString);
または、 ServiceClient クラスを使用することもできます。
ServiceClient svc = new ServiceClient(ConnectionString);
ヒント
コード内の接続文字列にアクセスするには、次の using ディレクティブを含め、 System.Configuration 名前空間を参照します。 using System.Configuration;
サービス クライアント オブジェクトを作成した後、そのオブジェクトを使用して Dataverse でアクションを実行します。 詳細については、「 XRM ツールを使用して Dataverse でアクションを実行する」を参照してください。
接続文字列パラメーター
接続文字列には、セミコロンで区切られた一連の名前と値のペアが含まれています。 次の表に、サポートされているパラメーターの一覧を示します。このパラメーターは任意の順序で入力できます。
| パラメーター名 | 内容 |
|---|---|
ServiceUri、Service Uri、UrlまたはServer |
Dataverse 環境用にURLを指定します。 URL は、http または https プロトコルを使用することができ、ポートはオプションです。 http プロトコルの既定ポートは 80 で、https プロトコルの既定ポートは 443 です。 サーバー URL の形式は通常 https://<organization-name>.crm.dynamics.com です組織名は必須です。 |
UserName、User Name、UserIdまたはUser Id |
資格情報に関連付けられたユーザーの ID 名を指定します。 |
Password |
資格情報に関連付けられたユーザー名のパスワードを指定します。 |
HomeRealmUri または Home Realm Uri |
ホーム レルムの URI を指定します。 |
AuthenticationType または AuthType |
Dataverse 環境に接続するために認証の種類を指定します。 有効な値は次のとおりです: AD、IFD(AD FS 有効化)、OAuth、Certificate、ClientSecret、 または Office365。 ただし、Dataverse 環境では、 OAuth、 Certificate、 ClientSecret、および Office365 のみが許可されます。注: Office365 認証の種類は非推奨であり、推奨される認証の種類として OAuth を使用することをお勧めします。 詳細については、「影響を受けた場合にアプリケーション コードを修正する方法」を参照してください。 |
RequireNewInstance |
接続がまだアクティブの間に再呼び出しされた場合に、既存の接続を再利用するかどうかを指定します。
trueに設定すると、システムによって一意の接続が作成されます。
falseに設定すると、既存の接続を再利用できます。 |
ClientId、AppId または ApplicationId |
Microsoft Entra ID または Active Directory フェデレーション サービス (AD FS) にアプリケーションを登録したとき割り当てた ClientID を指定します。 |
ClientSecret または Secret |
認証タイプが ClientSecret に設定されている場合は必須。 認証に使用するクライアント シークレット文字列。 |
RedirectUri または ReplyUrl |
Microsoft Entra ID または Active Directory フェデレーション サービス (AD FS) に登録したときの、アプリケーションのリダイレクト URI を指定します。 このパラメータは認証の種類が OAuth として指定されている場合にのみ適用されます。 |
TokenCacheStorePath |
ユーザー トークンのキャッシュに保存する必要がある場所の完全なパスを指定します。 実行プロセスには指定されたパスへのアクセス権があるべきです。 このパスを設定して構成するのはプロセスの責任です。 このパラメータは認証の種類が OAuth として指定されている場合にのみ適用されます。 |
LoginPrompt |
資格情報が指定されていない場合に、ユーザーに資格情報の入力を求めるメッセージを表示するかどうかを指定します。 有効な値は: - Always: 常に資格情報を指定するようユーザーを促す。- Auto: プロンプトを表示するかどうかを、ログイン コントロール インターフェイスで選択することをユーザーに許可する。- Never: ユーザーに資格情報の指定を求められません。 ユーザー インターフェイスを持たない接続メソッドを使用する場合は、この値を使用します。このパラメータは認証の種類が OAuth として指定されている場合にのみ適用されます。 |
StoreName または CertificateStoreName |
サムプリントで識別された証明書を見つけることができる店舗名を指定します。 設定する場合は、 Thumbprint が必要です。 |
Thumbprint または CertThumbprint |
S2S 接続時に使用する証明書のサムプリントを指定します。 設定すると、 AppID は必須であり、 UserID 値と Password 値は無視されます。 |
Integrated Security |
現在の Windows 資格情報を使用してインスタンスのトークンを作成することを指定します。 NuGet リリース Microsoft.CrmSdk.XrmTooling.CoreAssembly バージョン 9.1.0.21 の時点 |
ヒント
OAuth AuthType\AuthenticationType を使用する場合
開発とプロトタイプ作成の目的で、OAuth フローで使用するために、次の AppId または ClientId とリダイレクト URI が提供されます。
運用環境で使用するには、Azure 管理ポータルでテナントに固有の AppId または ClientId を作成します。
サンプルの AppId または ClientId = 51f81489-12ee-4a9e-aaae-a2591f45987d
サンプル RedirectUri = app://58145B91-0C36-4500-8554-080854F2AC97
接続文字列の例
次の例は、online の展開および認証シナリオに接続するための接続文字列の使用方法を示しています。 オンプレミスおよび IFD デプロイ インスタンスの接続文字列の例については、「 XRM ツールで接続文字列を使用して接続する」を参照してください。
Office365 を使用した名前付きアカウント
Office365 でユーザー名またはパスワードを使用して Dataverse への新しい接続を作成します。
ヒント
この AuthType は非推奨です。
OAuthを優先認証の種類として使用します。 詳細については、「 Office365 を使用した認証」を参照してください。
<add name="MyCDSServer"
connectionString="
AuthType=Office365;
Username=jsmith@contoso.onmicrosoft.com;
Password=passcode;
Url=https://contoso.crm.dynamics.com"/>
Microsoft 365 で名前付きアカウントを使用した OAuth と、認証を促すための UX
OAuth 経由で UserId またはパスワードを使用する Dataverse に新規に接続します。
ヒント
OAuth は、インタラクティブ フローを使用するときに Dataverse に接続するための推奨される認証タイプです。 この認証のタイプは Microsoft Entra ID の条件付きアクセスおよび多要素認証の機能を完全にサポートしています。
<add name="MyCDSServer"
connectionString="
AuthType=OAuth;
Username=jsmith@contoso.onmicrosoft.com;
Password=passcode;
Url=https://contosotest.crm.dynamics.com;
AppId=51f81489-12ee-4a9e-aaae-a2591f45987d;
RedirectUri=app://58145B91-0C36-4500-8554-080854F2AC97;
TokenCacheStorePath=c:\MyTokenCache;
LoginPrompt=Auto"/>
フォールバック UX で現在ログインしているユーザーを使用して認証を求める OAuth
OAuth 経由で現在ログインしているユーザーを使用して Dataverse への新しい接続を作成します。
ヒント
OAuth は、インタラクティブ フローを使用するときに Dataverse に接続するための推奨される認証タイプです。 この認証のタイプは Microsoft Entra ID の条件付きアクセスおよび多要素認証の機能を完全にサポートしています。
<add name="MyCDSServer"
connectionString="
AuthType=OAuth;
Username=jsmith@contoso.onmicrosoft.com;
Integrated Security=true;
Url=https://contosotest.crm.dynamics.com;
AppId=51f81489-12ee-4a9e-aaae-a2591f45987d;
RedirectUri=app://58145B91-0C36-4500-8554-080854F2AC97;
TokenCacheStorePath=c:\MyTokenCache\msal_cache.data;
LoginPrompt=Auto"/>
証明書ベース認証
アプリケーションまたはクライアント ID と証明書を使用して、Dataverse への新しい接続を作成します。
<add name="MyCDSServer"
connectionString="
AuthType=Certificate;
url=https://contosotest.crm.dynamics.com;
thumbprint={CertThumbPrintId};
ClientId={AppId};"
/>
ClientId またはクライアント シークレット ベースの認証
アプリケーションまたはクライアント ID とクライアント シークレットを使用して、Dataverse への新しい接続を作成します。
<add name="MyCDSServer"
connectionString="
AuthType=ClientSecret;
url=https://contosotest.crm.dynamics.com;
ClientId={AppId};
ClientSecret={ClientSecret}"
/>
接続状態を決定する
接続要求が成功したかどうかを決定するには、CrmServiceClientIsReady プロパティの値を確認してください。 true の場合、接続は成功し、作業する準備が整います。 それ以外の場合、接続エラーの原因については CrmServiceClient .LastCrmError および CrmServiceClient.LastCrmExceptionプロパティの値を確認してください。
関連項目
XRM ツールを使用して Windows のクライアント アプリケーションを作成する
CrmServiceClient コンストラクターを使用して Dataverse に接続
XRM ツールを使用して Dataverse でアクションを実行
CrmServiceClient