Siebel 어댑터를 사용한 보안 프로그래밍
어댑터 서비스 추가 참조 Visual Studio 플러그 인을 사용할 때 자격 증명을 보호하려면 어떻게 해야 하나요?
어댑터 서비스 참조 플러그 인 추가를 사용하여 WCF 클라이언트를 만드는 경우 Siebel 시스템의 사용자 이름과 암호를 제공해야 합니다. 어댑터 구성 대화 상자의 보안 탭에서만 이 작업을 수행해야 합니다. Uri 필드에 직접 입력하는 대신 보안 탭에서 Siebel 자격 증명을 입력하면 다음을 확인합니다.
자격 증명은 컴퓨터 화면에 액세스할 수 있는 모든 사용자가 읽을 수 있는 어댑터 서비스 참조 플러그 인 추가 대화 상자의 Uri 필드에 표시되지 않습니다.
어댑터 서비스 참조 플러그 인 추가에서 생성하는 구성 파일에 자격 증명이 표시되지 않습니다.
Siebel 시스템의 사용자 이름 및 암호를 입력하는 방법을 포함하여 어댑터 서비스 참조 플러그 인 추가를 사용하여 WCF 클라이언트를 생성하는 방법에 대한 자세한 내용은 Visual Studio에서 Siebel 작업에 대한 메타데이터 가져오기를 참조하세요.
코드에서 자격 증명을 설정하기 위한 모범 사례는 무엇인가요?
WCF는 ChannelFactory와 같은 클라이언트 통신 개체가 서비스에서 인증하는 데 사용하는 자격 증명을 구성하는 데 도움이 되는 ClientCredentials 클래스를 제공합니다. ClientCredentials 클래스를 사용하면 WCF가 해당 개체의 채널 스택에 지정된 모든 인증 메커니즘을 가져와서 클라이언트와 서비스 간의 교환에 적용하도록 합니다.
Siebel 어댑터는 사용 중인 애플리케이션에서 In-Process로 호스트되므로 ClientCredentials 클래스를 사용하여 사용하는 애플리케이션이 사용하는 클라이언트 통신 개체에 대한 자격 증명을 설정하는 것은 필수적이지 않습니다. 그러나 그렇게하는 것이 좋은 관행으로 간주됩니다.
Siebel 어댑터는 AcceptCredentialsInUri 바인딩 속성을 통해 ClientCredentials 클래스를 사용하도록 권장합니다. 이 속성은 어댑터가 연결 URI에서 Siebel 시스템의 사용자 이름과 암호를 허용할지 여부를 지정합니다. AcceptCredentialsInUri 는 기본적으로 false로 설정됩니다. 즉, 연결 URI에 자격 증명이 포함된 경우 어댑터가 예외를 throw합니다. AcceptCredentialsInUri를true로 설정하여 연결 URI에 자격 증명을 제공할 수 있습니다. 실제로는 이 작업을 수행해야 합니다. 예를 들어 ServiceModel metadata 유틸리티 도구(svcutil.exe)를 사용하여 Siebel 시스템 아티팩트에 대한 WCF 클라이언트 클래스를 생성하는 경우입니다.
다음 예제에서는 Credentials 클래스를 사용하여 ChannelFactory에서 Siebel 시스템에 대한 자격 증명을 설정하는 방법을 보여 줍니다.
// Create binding and endpoint
SiebelBinding binding = new SiebelBinding();
EndpointAddress endpointAddress = new EndpointAddress("siebel://Siebel_server:1234?SiebelObjectManager=obj_mgr&SiebelEnterpriseServer=entserver&Language=enu ");
// Create the channel factory
ChannelFactory<IRequestChannel> factory = new ChannelFactory<IRequestChannel>(binding, endpointAddress))
// Set user name and password
factory.Credentials.UserName.UserName = "YourUserName";
factory.Credentials.UserName.Password = "YourPassword";
// Open the channel factory
factory.Open();
다음 예제에서는 ClientCredentials 클래스를 사용하여 WCF 클라이언트에서 Siebel 시스템에 대한 자격 증명을 설정하는 방법을 보여 줍니다.
// Initialize a new client for the SQLEXECUTE operation from configuration
BusinessObjects_Account_Account_OperationClient accountAccountClient = new BusinessObjects_Account_Account_OperationClient ("SiebelBinding_BusinessObjects_Account_Account_Operation");
// Set user name and password
accountAccountClient.ClientCredentials.UserName.UserName = "YourUserName";
accountAccountClient.ClientCredentials.UserName.Password = "YourPassword";
// Open the client
accountAccountClient.Open();
프로세스 경계를 넘어 보다 안전한 데이터 교환을 어떻게 제공할 수 있나요?
Siebel 어댑터는 해당 어댑터를 사용하는 애플리케이션 또는 서비스와 함께 In Process에서 호스트됩니다. 어댑터는 소비자와 함께 In-Process에 호스트되므로 소비자와 Siebel 어댑터 간에 교환되는 메시지에 대한 보안을 제공할 필요가 없습니다. 그러나 소비하는 애플리케이션 또는 서비스가 프로세스 경계를 넘어 중요한 데이터베이스 정보가 포함된 메시지를 다른 서비스 또는 클라이언트로 보내는 경우 사용자 환경에서 이 데이터에 대한 적절한 보호를 제공하기 위한 조치를 취해야 합니다. WCF(Windows Communication Foundation)는 클라이언트와 서비스 간에 전송되는 메시지를 보호하는 데 도움이 되는 다양한 옵션을 제공합니다. WCF에서 클라이언트와 서비스 간에 전송된 메시지를 보호하는 데 도움이 되는 방법에 대한 자세한 내용은 서비스 및 클라이언트 보안을 참조하세요. WCF에서 제공하는 보안 기능에 대한 자세한 내용은 Windows Communication Foundation 보안을 참조하세요.