Freigeben über


Sichere Programmierung mit dem Oracle Database-Adapter

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

Wenn Sie das Add Adapter Service Reference Plug-In verwenden, um einen WCF-Client zu erstellen, müssen Sie einen Benutzernamen und ein Kennwort für die Oracle-Datenbank angeben. Sie sollten dies nur über die Registerkarte Sicherheit im Dialogfeld Adapter konfigurieren tun. Indem Sie die Oracle-Anmeldeinformationen auf der Registerkarte Sicherheit und nicht direkt in das Feld URI konfigurieren eingeben, stellen Sie Folgendes sicher:

  • Die Anmeldeinformationen werden nicht im Feld URI des Dialogfelds Adapterdienstverweis-Plug-In hinzufügen angezeigt, in dem jeder Benutzer mit Zugriff auf ihren Computerbildschirm sie 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-In, einschließlich der Eingabe eines Benutzernamens und kennworts für die Oracle-Datenbank, finden Sie unter Abrufen von Metadaten für Oracle Database-Vorgä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 bei einem Dienst zu authentifizieren. Mithilfe der ClientCredentials-Klasse stellen Sie sicher, dass WCF alle Authentifizierungsmechanismen verwendet, die im Kanalstapel dieses Objekts angegeben sind, und sie auf den Austausch zwischen Ihrem Client und dem Dienst anwendet.

Da der Oracle Database-Adapter prozessintern mit seiner verbrauchenden Anwendung gehostet wird, ist es nicht zwingend erforderlich, die ClientCredentials-Klasse zu verwenden, um Anmeldeinformationen für die Clientkommunikationsobjekte festzulegen, die die verwendende Anwendung verwendet. Es wird jedoch als bewährte Praxis 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 false. Dies 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 Sie die Credentials-Eigenschaft verwenden, um Anmeldeinformationen für die Oracle-Datenbank in einer ChannelFactory festzulegen.

// 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 Sie die ClientCredentials-Klasse verwenden, um Anmeldeinformationen für die Oracle-Datenbank auf einem WCF-Client festzulegen.

// 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 für einen sichereren Datenaustausch über Prozessgrenzen hinweg sorgen?

Der Oracle Database-Adapter wird prozessintern mit der Anwendung oder dem Dienst gehostet, von der er verwendet wird. Da der Adapter prozessintern mit dem Consumer gehostet wird, ist es nicht erforderlich, Sicherheit für Nachrichten bereitzustellen, die zwischen dem Consumer und dem Oracle Database-Adapter ausgetauscht werden. Wenn die verwendende Anwendung oder der Dienst jedoch Nachrichten sendet, die vertrauliche Datenbankinformationen über eine Prozessgrenze hinweg an einen anderen Dienst oder Client enthalten, sollten Sie Maßnahmen ergreifen, um einen angemessenen Schutz für diese Daten in Ihrer Umgebung zu gewährleisten. Windows Communication Foundation (WCF) bietet viele Optionen zum Schützen von Nachrichten, die zwischen Clients und Diensten gesendet werden. Weitere Informationen zum Schützen von Nachrichten, die zwischen Clients und Diensten in WCF gesendet werden, finden Sie unter Sichern von Diensten und Clients. Weitere allgemeine Informationen zu Sicherheitsfeatures, die WCF bereitstellt, finden Sie unter Windows Communication Foundation-Sicherheit.

Weitere Informationen

Sichern der Oracle Database-Anwendungen
Bewährte Methoden