[转贴][WCF Security] 2. 安全参数设置

[原文]http://www.rainsts.net/article.asp?id=473

1. 安全方式

通过设置 Binding 的属性 Security 来实现。

NetTcpBinding binding = new NetTcpBinding();
binding.Security.Mode = SecurityMode.Transport;
binding.Security.Transport.ProtectionLevel = System.Net.Security.ProtectionLevel.EncryptAndSign;

2. 消息保护

通过 ServiceContractAttribute 和 OperationContractAttribute 特性的 ProtectionLevel 参数我们可以设置不同的消息保护级别。

[ServiceContract(ProtectionLevel = ProtectionLevel.EncryptAndSign)]
interface IMyContract
{
  ...
}

3. 身份验证

不同的部署环境,会采取不同的选择。在 Intranet 环境下,我们可能选择 Windows 集成验证方式,而在 Internet 环境下通常的方案是采取 X.509 数字证书,当然最最通用最最常见依然是用户名/密码。

以 Windows 集成验证为例,客户端可以通过 ClientBase.ClientCredentials 属性向服务器端发送与其相匹配的身份验证信息。缺省情况下,客户端使用当前 Windows 登录账户作为身份验证信息,我们也可以显式设置不同的身份信息。

代理方式:

NetworkCredential credentials = new NetworkCredential( );
credentials.Domain = "MyDomain";
credentials.UserName = "MyUsername";
credentials.Password = "MyPassword";

using (MyContractClient client = new MyContractClient())
{
  client.ClientCredentials.Windows.ClientCredential = credentials;
  client.MyMethod( );
}

工厂方式:

ChannelFactory<IMyContract> factory = new ChannelFactory<IMyContract>("");
factory.Credentials.Windows.ClientCredential = new NetworkCredential(...);

IMyContract client = factory.CreateChannel( );
using(client as IDisposable)
{
 client.MyMethod( );
}

在服务中,我们可以用 ServiceSecurityContext.Current (或者 OperationContext.Current.ServiceSecurityContext) 来获取相关身份信息。

Console.WriteLine(ServiceSecurityContext.Current.WindowsIdentity.AuthenticationType);
Console.WriteLine(ServiceSecurityContext.Current.WindowsIdentity.Name);

我们会在后面的章节详细讲述几种常见的验证开发方式。

时间: 2024-07-29 08:49:56

[转贴][WCF Security] 2. 安全参数设置的相关文章

接口-php怎么调用wcf服务,调用参数是对象参数。

问题描述 php怎么调用wcf服务,调用参数是对象参数. .net做的wcf接口,部署IIS上访问是可以的如图: 我用php soap调用测试,是否能通,也是可以的: <?php header('Content-Type: text/plain'); $client = new SoapClient('http://testu.sh.jinri.com/Flight.User.SOA/SuggestService.svc?wsdl'); echo ' '; echo "提供的方法n&quo

jvm常用参数设置 专题

  在jdk8中 -Xms2g不合法,能通过的:-Xms2G #!/bin/bash JAVA_OPTS="-Xms4G -Xmx4G -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./dump-yyy.log -XX:ErrorFile=./jvm-crash.log -Djava.security.egd=file:/dev/./urandom" #!/bin/bash JAVA_OPTS="-Xdebug -Xrunj

《HBase管理指南》一1.6 修改内核参数设置

1.6 修改内核参数设置 HBase是运行在Hadoop上的数据库,和其他数据库一样,它也要同时打开很多个文件.Linux对于一个进程可打开文件描述符的个数有所限制.默认的限制是每个进程可打开1024个文件.为了使HBase能够顺畅运行,你需要调高启动HBase的那个用户允许打开的文件描述符的最大个数.在本书中,就是hadoop用户. 你还要调高Hadoop的nproc设置.nproc设置指定了用户可以同时启动的最大进程数量.如果nproc过低,就会遇到OutOfMemoryError这种错误.

FusionCharts 参数设置

FusionCharts 参数设置 功能特性 animation 是否动画显示数据,默认为 1(True) showNames 是否显示横向坐标轴(x轴)标签名称 rotateNames 是否旋转显示标签,默认为0(False):横向显示 showValues 是否在图表显示对应的数据值,默认为1(True) yAxisMinValue 指定纵轴(y轴)最小值,数字 yAxisMaxValue 指定纵轴(y轴)最大值,数字 showLimits 是否显示图表限值(y轴最大.最小值),默认为1(T

在Discuz论坛中插入FLASH的相关参数设置

此贴是详细讲解如何自定义"FLASH"代码参数设置,建议新手看看. 最终在Discuz论坛中插入FLASH,实现的效果图如下: 可以定义FLASH的高度和宽度,及路径.. 首先要明白的是,若想在发贴时插入Flash 动画,必须满足三个因素:1)   相应的版块设置中必须是"允许使用 Discuz! 代码" 2)相应的用户组权限必须是"允许使用自定义 Discuz! 代码" 2)必须把 [flash] 代码设置为"可用"(如图所

TQuery的参数设置

一.TQuery的参数设置 1. 在SQL属性中:Select * from 表名 where 字段名=:变量名 跟在" : "后面的是变量.这样写后,在参数属性中就可以修改该变量的数据类型等. 2. 对变量的赋值: Query1->Active=false; Query1->Params->Items[0]->AsString=Edit1->Text; Query1->Active=true;//查找符合变量的记录 3. 用DBGrid显示结果 D

关于IIS配置已有项目问题之数据库连接出错,请检查Conn.asp文件中的数据库参数设置

问题描述 关于IIS配置已有项目问题之数据库连接出错,请检查Conn.asp文件中的数据库参数设置 百度上主流方法都试过,包括父路径,32位开启,设置A USER权限,设置Everyone权限.以下是Conn.asp文件内容:<%Dim SqlNowStringDataPart_DDataPart_YDataPart_HDataPart_SDataPart_WDataPart_MCurrentPageDim ConnDBPathCollectDBPathDataServerDataUserDat

【短视频SDK】合成时长和文件大小对比数据---给参数设置提供参考.

本文之前我们已经有一篇文章针对现在短视频SDK暴露的参数有一个基本解析:----->传送门:对焦模式.裁剪模式.视频质量.分辨率.视频比例.帧率.关键帧间隔等参数解析.做好一个短视频SDK的核心我们认为有几个要点:清晰度,稳定性,合成速度.开发者理解了这些参数的意义之后,那么到底怎么样选择参数呢?今天我们以数据的形式来展示目前阿里云短视频SDK能够达到什么程度,以方便产品和开发同学选择怎么样的参数. 一.测试准备 1.使用SDK:短视频SDK(Android端) v3.3.2版本 2.根据CPU

Direcshow中视频捕捉和参数设置报告

Direcshow中视频捕捉和参数设置报告 1.      关于视频捕捉(About Video Capture in Dshow) 1视频捕捉Graph的构建 一个能够捕捉音频或者视频的graph图都称之为捕捉graph图.捕捉graph图比一般的文件回放graph图要复杂许多,dshow提供了一个Capture Graph Builder COM组件使得捕捉graph图的生成更加简单.Capture Graph Builder提供了一个ICaptureGraphBuilder2接口,这个接口