次の方法で共有


Oracle データベース アダプターを使用したセキュリティで保護されたプログラミング

Add Adapter Service Reference Visual Studio プラグインを使用する場合、資格情報を保護するにはどうすればよいですか?

アダプター サービス参照の追加プラグインを使用して WCF クライアントを作成する場合は、Oracle データベースのユーザー名とパスワードを指定する必要があります。 これは、[アダプターの構成] ダイアログ ボックスの [セキュリティ] タブからのみ行う必要があります。 [URI の構成] フィールドに直接入力するのではなく、[セキュリティ] タブから Oracle 資格情報を入力することで、次のことを確認できます。

  • 資格情報は、[アダプター サービス参照プラグインの追加] ダイアログ ボックスの [Uri ] フィールドには表示されず、コンピューター画面にアクセスできるユーザーは誰でも読み取ることができます。

  • 資格情報は、アダプター サービス参照プラグインが生成する構成ファイルには表示されません。

    アダプター サービス参照プラグインを使用して WCF クライアントを生成する方法の詳細については、Oracle データベースのユーザー名とパスワードを入力する方法を含む、「 Visual Studio での Oracle データベース操作のメタデータを取得する」を参照してください。

コードで資格情報を設定するためのベスト プラクティスとは

WCF には ClientCredentials クラスが用意されておりChannelFactory などのクライアント通信オブジェクトがサービスで自身を認証するために使用する資格情報を構成するのに役立ちます。 ClientCredentials クラスを使用すると、WCF がそのオブジェクトのチャネル スタックで指定されている認証メカニズムを確実に受け取り、クライアントとサービス間の交換に適用します。

Oracle Database アダプターは使用中のアプリケーションでインプロセスでホストされるため、 ClientCredentials クラスを使用して、使用するアプリケーションが使用するクライアント通信オブジェクトに資格情報を設定することは必須ではありません。 ただし、これを行うことをお勧めします。

Oracle データベース アダプターは、 ClientCredentials クラスの使用を推奨します。 このプロパティは、接続 URI で Oracle データベースのユーザー名とパスワードをアダプターが受け入れるかどうかを指定します。 AcceptCredentialsInUri の既定値は false です。つまり、接続 URI に資格情報が含まれている場合、アダプターは例外をスローします。 AcceptCredentialsInUritrue に設定すると、接続 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 データベース アダプターは、それを使用するアプリケーションまたはサービスでインプロセスでホストされます。 アダプターはコンシューマーと一緒にインプロセスでホストされるため、コンシューマーと Oracle データベース アダプターの間で交換されるメッセージにセキュリティを提供する必要はありません。 ただし、使用しているアプリケーションまたはサービスが、プロセス境界を越えて機密性の高いデータベース情報を含むメッセージを別のサービスまたはクライアントに送信する場合は、環境内でこのデータを適切に保護するための対策を講じる必要があります。 Windows Communication Foundation (WCF) には、クライアントとサービス間で送信されるメッセージをセキュリティで保護するための多くのオプションが用意されています。 WCF のクライアントとサービスの間で送信されるメッセージをセキュリティで保護する方法の詳細については、「 サービスとクライアントのセキュリティ保護」を参照してください。 WCF で提供されるセキュリティ機能の詳細については、「 Windows Communication Foundation セキュリティ」を参照してください。

こちらもご覧ください

Oracle Database アプリケーションをセキュリティで保護する
ベスト プラクティス