MailSecurity クラス
[このドキュメントはプレビュー版であり、後のリリースで変更されることがあります。 空白のトピックは、プレースホルダーとして挿入されています。]
メール バインディングのチャネル セキュリティ オプションを構成するためのメソッドを含んでいます。
名前空間: Microsoft.ServiceModel.Channels.Mail
アセンブリ: Microsoft.ServiceModel.Channels.Mail (Microsoft.ServiceModel.Channels.Mail.dll 内)
構文
'宣言
Public NotInheritable Class MailSecurity
'使用
Dim instance As MailSecurity
public sealed class MailSecurity
public ref class MailSecurity sealed
[<SealedAttribute>]
type MailSecurity = class end
解説
このクラスは、MailBindingBase オブジェクトから派生したクラスで使用されます。Security オブジェクトを返すには、MailSecurity プロパティを使用します。
注意
このクラスは .NET Compact Framework Version 3.5 に含まれていますが、実行時には .NET Compact Framework 3.5 または .NET Framework Version 3.0 以降が必要です。
例
メール バインディングのメッセージ セキュリティを有効にして、メッセージを送信する方法の例を次に示します。
カスタム シリアライザーは Exchange Server のメール トランスポートに固有ではないため、この例に含まれていません。
Class Program
PrivateShared ChannelName AsString = "Channel1"PrivateShared ServiceEmailAddress AsString = "service@fabrikam.com"PrivateShared serializer AsNew CFMessagingSerializer(GetType(String))
SharedSub Main(ByVal args() AsString)
Dim factory As IChannelFactory(Of IOutputChannel)
Dim output As IOutputChannel
Dim bpc As BindingParameterCollection
Dim message As Message
Dim binding As ExchangeWebServiceMailBinding
Dim clientEmailServer AsNew Uri("http://mail.example.com")
Dim clientEmailAddress AsString = "client@example.com"Dim password AsString = "password"
binding = New ExchangeWebServiceMailBinding(clientEmailServer, New NetworkCredential(clientEmailAddress, password))
binding.Security.Mode = MailSecurityMode.Message
bpc = New BindingParameterCollection()
Dim cc AsNew ClientCredentials()
cc.ClientCertificate.SetCertificate(System.Security.Cryptography.X509Certificates.StoreLocation.CurrentUser, System.Security.Cryptography.X509Certificates.StoreName.My, System.Security.Cryptography.X509Certificates.X509FindType.FindBySubjectName, "example.com")
cc.ServiceCertificate.Authentication.CertificateValidationMode = System.ServiceModel.Security.X509CertificateValidationMode.ChainTrust
cc.ServiceCertificate.SetDefaultCertificate(System.Security.Cryptography.X509Certificates.StoreLocation.CurrentUser, System.Security.Cryptography.X509Certificates.StoreName.My, System.Security.Cryptography.X509Certificates.X509FindType.FindBySubjectName, "fabrikam.com")
Dim cpr AsNew ChannelProtectionRequirements()
' Sign and encrypt body for *all* messages
cpr.OutgoingSignatureParts.AddParts(New MessagePartSpecification(True), "*")
cpr.IncomingSignatureParts.AddParts(New MessagePartSpecification(True), "*")
cpr.OutgoingEncryptionParts.AddParts(New MessagePartSpecification(True), "*")
cpr.IncomingEncryptionParts.AddParts(New MessagePartSpecification(True), "*")
bpc.Add(cc)
bpc.Add(cpr)
factory = binding.BuildChannelFactory(Of IOutputChannel)(bpc)
factory.Open()
Dim sendAddress AsNew EndpointAddress(MailUriHelper.CreateUri(ChannelName, ServiceEmailAddress), EndpointIdentity.CreateX509CertificateIdentity(cc.ServiceCertificate.DefaultCertificate))
output = factory.CreateChannel(sendAddress)
message = System.ServiceModel.Channels.Message.CreateMessage(MessageVersion.Default, "urn:Test", "Hello, World!", serializer)
output.Open()
output.Send(message)
output.Close()
factory.Close()
binding.Close()
' Receiving message on the server side 'Dim listener As IChannelListener(Of IInputChannel)
Dim input As IInputChannel
Dim serviceEmailServer AsNew Uri("http://mail.fabrikam.com")
binding = New ExchangeWebServiceMailBinding(serviceEmailServer, New NetworkCredential(ServiceEmailAddress, password), MailSecurityMode.Message)
' Create credential for the listening sideDim sc AsNew ServiceCredentials()
sc.ServiceCertificate.SetCertificate(System.Security.Cryptography.X509Certificates.StoreLocation.CurrentUser, System.Security.Cryptography.X509Certificates.StoreName.My, System.Security.Cryptography.X509Certificates.X509FindType.FindBySubjectName, "fabrikam.com")
sc.ClientCertificate.Authentication.CertificateValidationMode = X509CertificateValidationMode.None
bpc = New BindingParameterCollection()
bpc.Add(sc)
bpc.Add(cpr)
listener = binding.BuildChannelListener(Of IInputChannel)(MailUriHelper.CreateUri(ChannelName, ""))
listener.Open()
input = listener.AcceptChannel()
input.Open()
message = input.Receive()
Dim data AsString = message.GetBody(OfString)(serializer)
input.Close()
listener.Close()
binding.Close()
EndSubEndClass
class Program
{
privatestaticstring ChannelName = "Channel1";
privatestaticstring ServiceEmailAddress = "service@fabrikam.com";
privatestatic CFMessagingSerializer serializer = new CFMessagingSerializer(typeof(string));
staticvoid Main(string[] args)
{
IChannelFactory<IOutputChannel> factory;
IOutputChannel output;
BindingParameterCollection bpc;
Message message;
ExchangeWebServiceMailBinding binding;
Uri clientEmailServer = new Uri("http://mail.example.com");
string clientEmailAddress = "client@example.com";
string password = "password";
binding = new ExchangeWebServiceMailBinding(clientEmailServer,
new NetworkCredential(clientEmailAddress, password));
binding.Security.Mode = MailSecurityMode.Message;
bpc = new BindingParameterCollection();
ClientCredentials cc = new ClientCredentials();
cc.ClientCertificate.SetCertificate(
System.Security.Cryptography.X509Certificates.StoreLocation.CurrentUser,
System.Security.Cryptography.X509Certificates.StoreName.My,
System.Security.Cryptography.X509Certificates.X509FindType.FindBySubjectName,
"example.com");
cc.ServiceCertificate.Authentication.CertificateValidationMode =
System.ServiceModel.Security.X509CertificateValidationMode.ChainTrust;
cc.ServiceCertificate.SetDefaultCertificate(System.Security.Cryptography.X509Certificates.StoreLocation.CurrentUser,
System.Security.Cryptography.X509Certificates.StoreName.My, System.Security.Cryptography.X509Certificates.X509FindType.FindBySubjectName,
"fabrikam.com");
ChannelProtectionRequirements cpr = new ChannelProtectionRequirements();
// Sign and encrypt body for *all* messages
cpr.OutgoingSignatureParts.AddParts(new MessagePartSpecification(true), "*");
cpr.IncomingSignatureParts.AddParts(new MessagePartSpecification(true), "*");
cpr.OutgoingEncryptionParts.AddParts(new MessagePartSpecification(true), "*");
cpr.IncomingEncryptionParts.AddParts(new MessagePartSpecification(true), "*");
bpc.Add(cc);
bpc.Add(cpr);
factory = binding.BuildChannelFactory<IOutputChannel>(bpc);
factory.Open();
EndpointAddress sendAddress = new EndpointAddress(MailUriHelper.CreateUri(ChannelName,
ServiceEmailAddress), EndpointIdentity.CreateX509CertificateIdentity(cc.ServiceCertificate.DefaultCertificate));
output = factory.CreateChannel(sendAddress);
message = Message.CreateMessage(MessageVersion.Default, "urn:Test", "Hello, World!", serializer);
output.Open();
output.Send(message);
output.Close();
factory.Close();
binding.Close();
// Receiving message on the server side//
IChannelListener<IInputChannel> listener;
IInputChannel input;
Uri serviceEmailServer = new Uri("http://mail.fabrikam.com");
binding = new ExchangeWebServiceMailBinding(serviceEmailServer,
new NetworkCredential(ServiceEmailAddress, password),
MailSecurityMode.Message);
// Create credential for the listening side
ServiceCredentials sc = new ServiceCredentials();
sc.ServiceCertificate.SetCertificate(
System.Security.Cryptography.X509Certificates.StoreLocation.CurrentUser,
System.Security.Cryptography.X509Certificates.StoreName.My,
System.Security.Cryptography.X509Certificates.X509FindType.FindBySubjectName,
"fabrikam.com");
sc.ClientCertificate.Authentication.CertificateValidationMode = X509CertificateValidationMode.None;
bpc = new BindingParameterCollection();
bpc.Add(sc);
bpc.Add(cpr);
listener = binding.BuildChannelListener<IInputChannel>(MailUriHelper.CreateUri(ChannelName, ""), bpc);
listener.Open();
input = listener.AcceptChannel();
input.Open();
message = input.Receive();
string data = message.GetBody<string>(serializer);
input.Close();
listener.Close();
binding.Close();
}
}
継承階層
System.Object
Microsoft.ServiceModel.Channels.Mail.MailSecurity
スレッド セーフ
この型のすべてのパブリック static (Visual Basic では Shared) メンバーは、スレッド セーフです。 インスタンス メンバーの場合は、スレッド セーフであるとは限りません。
プラットフォーム
Windows CE, Windows Mobile for Smartphone, Windows Mobile for Pocket PC
.NET Framework および .NET Compact Framework では、各プラットフォームのすべてのバージョンはサポートしていません。 サポートされているバージョンについては、「.NET フレームワークのシステム要件」を参照してください。
バージョン情報
.NET Compact Framework
サポート対象 : 3.5