Oracle Database アダプターを使用したセキュリティで保護されたプログラミング
アダプター サービスの追加リファレンス Visual Studio プラグインを使用する場合に資格情報を保護する方法
アダプター サービス参照の追加プラグインを使用して WCF クライアントを作成する場合は、Oracle データベースのユーザー名とパスワードを指定する必要があります。 これは、[アダプターの構成] ダイアログ ボックスの [セキュリティ] タブからのみ行う必要があります。 [URI の構成] フィールドに直接ではなく、[セキュリティ] タブから Oracle 資格情報を入力することで、次のことを確認できます。
資格情報は、[アダプター サービス参照プラグインの追加] ダイアログ ボックスの [Uri ] フィールドには表示されません。このダイアログ ボックスでは、コンピューター画面にアクセスできるすべてのユーザーが資格情報を読み取ることができます。
資格情報は、アダプター サービス参照プラグインの追加によって生成される構成ファイルには表示されません。
アダプター サービス参照プラグインの追加を使用して WCF クライアントを生成する方法 (Oracle データベースのユーザー名とパスワードを入力する方法など) の詳細については、「 Visual Studio で Oracle Database 操作のメタデータを取得する」を参照してください。
コードで資格情報を設定するためのベスト プラクティスとは
WCF には ClientCredentials クラスが用意されており 、 ChannelFactory などのクライアント通信オブジェクトがサービスで自身を認証するために使用する資格情報を構成するのに役立ちます。 ClientCredentials クラスを使用すると、WCF がそのオブジェクトのチャネル スタックで指定されている認証メカニズムを確実に受け取り、クライアントとサービス間の交換に適用します。
Oracle Database アダプターは使用中のアプリケーションと共にインプロセスでホストされるため、 ClientCredentials クラスを使用して、使用するアプリケーションが使用するクライアント通信オブジェクトに資格情報を設定することは必須ではありません。 ただし、これを行うことをお勧めします。
Oracle Database アダプターは、 ClientCredentials クラスの使用を推奨します。 このプロパティは、接続 URI で Oracle データベースのユーザー名とパスワードをアダプターが受け入れるかどうかを指定します。 AcceptCredentialsInUri の既定値は false です。つまり、接続 URI に資格情報が含まれている場合、アダプターは例外をスローします。 AcceptCredentialsInUri を true に設定すると、接続 URI に資格情報を指定できます。
次の例では、 Credentials プロパティを使用して 、ChannelFactory 上の Oracle データベースの資格情報を設定する方法を示します。
// Create binding and endpoint
OracleDBBinding binding = new OracleDBBinding();
EndpointAddress endpointAddress = new EndpointAddress("oracleDB://Adapter");
// Create the channel factory
ChannelFactory<IRequestChannel> factory = new ChannelFactory<IRequestChannel>(binding, endpointAddress))
// Set user name and password
factory.Credentials.UserName.UserName = "SCOTT";
factory.Credentials.UserName.Password = "TIGER";
// Open the channel factory
factory.Open();
次の例は、 ClientCredentials クラスを使用して、WCF クライアント上の Oracle データベースの資格情報を設定する方法を示しています。
// Initialize a new client for the SQLEXECUTE operation from configuration
SQLEXECUTEClient sqlExecuteClient = new SQLEXECUTEClient("OracleDBBinding_SQLEXECUTE");
// Set user name and password
sqlExecuteClient.ClientCredentials.UserName.UserName = "SCOTT";
sqlExecuteClient.ClientCredentials.UserName.Password = "TIGER";
// Open the client
sqlExecuteClient.Open();
プロセスの境界を越えてより安全なデータ交換を提供するにはどうすればよいですか?
Oracle Database アダプターは、それを使用するアプリケーションまたはサービスでインプロセスでホストされます。 アダプターはコンシューマーとインプロセスでホストされるため、コンシューマーと Oracle Database アダプターの間で交換されるメッセージに対してセキュリティを提供する必要はありません。 ただし、使用しているアプリケーションまたはサービスがプロセス境界を越えて機密性の高いデータベース情報を含むメッセージを別のサービスまたはクライアントに送信する場合は、環境内でこのデータを適切に保護するための対策を講じます。 Windows Communication Foundation (WCF) には、クライアントとサービス間で送信されるメッセージをセキュリティで保護するための多くのオプションが用意されています。 WCF のクライアントとサービス間で送信されるメッセージをセキュリティで保護する方法の詳細については、「 サービスとクライアントのセキュリティ保護」を参照してください。 WCF が提供するセキュリティ機能の詳細については、「 Windows Communication Foundation Security」を参照してください。