Freigeben über


Sichere Programmierung mit dem Oracle-Datenbankadapter

Wie kann ich Anmeldeinformationen schützen, wenn ich das Visual Studio-Plug-In "Adapterdienstreferenz hinzufügen" verwende?

Wenn Sie das Add Adapter Service Reference Plug-In zum Erstellen eines WCF-Clients verwenden, müssen Sie einen Benutzernamen und ein Kennwort für die Oracle-Datenbank angeben. Dies sollte nur über die Registerkarte "Sicherheit " im Dialogfeld "Adapter konfigurieren " ausgeführt werden. Indem Sie die Oracle-Anmeldeinformationen auf der Registerkarte "Sicherheit " anstelle direkt in das Feld " URI konfigurieren " eingeben, stellen Sie Folgendes sicher:

  • Die Anmeldeinformationen werden nicht im Feld "URI " des Dialogfelds "Adapterdienstreferenz-Plug-In hinzufügen" angezeigt, in dem jeder Benutzer, der Zugriff auf Ihren Computer hat, diese lesen kann.

  • Die Anmeldeinformationen werden nicht in der Konfigurationsdatei angezeigt, die vom Add Adapter Service Reference Plug-In generiert wird.

    Weitere Informationen zum Generieren eines WCF-Clients mithilfe des Add Adapter Service Reference Plug-Ins, einschließlich der Eingabe eines Benutzernamens und Kennworts für die Oracle-Datenbank, finden Sie unter Abrufen von Metadaten für Oracle-Datenbankvorgänge in Visual Studio.

Was sind bewährte Methoden zum Festlegen von Anmeldeinformationen im Code?

WCF stellt die ClientCredentials-Klasse bereit, mit der Sie die Anmeldeinformationen konfigurieren können, die ein Clientkommunikationsobjekt, z. B. eine ChannelFactory, verwendet, um sich mit einem Dienst zu authentifizieren. Mithilfe der ClientCredentials-Klasse stellen Sie sicher, dass WCF alle Authentifizierungsmechanismen verwendet, die im Kanalstapel des Objekts angegeben sind, und wendet sie auf den Austausch zwischen Ihrem Client und dem Dienst an.

Da der Oracle-Datenbankadapter mit seiner verbrauchenden Anwendung im Prozess gehostet wird, ist es nicht zwingend erforderlich, die ClientCredentials-Klasse zum Festlegen von Anmeldeinformationen für die Clientkommunikationsobjekte zu verwenden, die von der verwendeten Anwendung verwendet werden. Es wird jedoch als bewährte Methode angesehen, dies zu tun.

Der Oracle Database-Adapter empfiehlt die Verwendung der ClientCredentials-Klasse . Diese Eigenschaft gibt an, ob der Adapter den Benutzernamen und das Kennwort für die Oracle-Datenbank im Verbindungs-URI akzeptiert. AcceptCredentialsInUri ist standardmäßig auf "false" festgelegt. Das bedeutet, dass der Adapter eine Ausnahme auslöst, wenn der Verbindungs-URI Anmeldeinformationen enthält. Sie können "AcceptCredentialsInUri " auf "true " festlegen, um Anmeldeinformationen im Verbindungs-URI anzugeben.

Das folgende Beispiel zeigt, wie Die Credentials-Eigenschaft zum Festlegen von Anmeldeinformationen für die Oracle-Datenbank in einer ChannelFactory verwendet wird.

// 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();  

Das folgende Beispiel zeigt, wie Die ClientCredentials-Klasse zum Festlegen von Anmeldeinformationen für die Oracle-Datenbank auf einem WCF-Client verwendet wird.

// 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();  

Wie kann ich einen sichereren Datenaustausch über Prozessgrenzen hinweg bereitstellen?

Der Oracle-Datenbankadapter wird mit der Anwendung oder dem Dienst gehostet, die ihn nutzt. Da der Adapter im Prozess mit dem Verbraucher gehostet wird, muss keine Sicherheit für Nachrichten bereitgestellt werden, die zwischen dem Verbraucher und dem Oracle Database-Adapter ausgetauscht werden. Wenn die verbrauchende Anwendung oder der Dienst jedoch Nachrichten sendet, die vertrauliche Datenbankinformationen über eine Prozessgrenze an einen anderen Dienst oder Client enthalten, sollten Sie Maßnahmen ergreifen, um in Ihrer Umgebung einen angemessenen Schutz für diese Daten bereitzustellen. Windows Communication Foundation (WCF) bietet viele Optionen zum Sichern von Nachrichten, die zwischen Clients und Diensten gesendet werden. Weitere Informationen zum Sichern von Nachrichten, die zwischen Clients und Diensten in WCF gesendet werden, finden Sie unter Sichern von Diensten und Clients. Allgemeine Informationen zu sicherheitsrelevanten Features, die WCF bereitstellt, finden Sie unter Windows Communication Foundation Security.

Siehe auch

Sichern Ihrer Oracle-Datenbankanwendungen
Bewährte Methoden