惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Know Your Adversary
Know Your Adversary
云风的 BLOG
云风的 BLOG
Recent Announcements
Recent Announcements
F
Fortinet All Blogs
B
Blog
罗磊的独立博客
宝玉的分享
宝玉的分享
Vercel News
Vercel News
Martin Fowler
Martin Fowler
N
Netflix TechBlog - Medium
P
Proofpoint News Feed
T
Threatpost
Security Latest
Security Latest
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Stack Overflow Blog
Stack Overflow Blog
I
Intezer
P
Privacy International News Feed
D
Docker
月光博客
月光博客
博客园 - 三生石上(FineUI控件)
M
MIT News - Artificial intelligence
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
L
Lohrmann on Cybersecurity
Google DeepMind News
Google DeepMind News
The Last Watchdog
The Last Watchdog
A
Arctic Wolf
IT之家
IT之家
S
SegmentFault 最新的问题
S
Securelist
博客园 - 叶小钗
N
News and Events Feed by Topic
F
Full Disclosure
Security Archives - TechRepublic
Security Archives - TechRepublic
Engineering at Meta
Engineering at Meta
Hacker News: Ask HN
Hacker News: Ask HN
博客园 - Franky
GbyAI
GbyAI
AI
AI
Y
Y Combinator Blog
WordPress大学
WordPress大学
Latest news
Latest news
Microsoft Security Blog
Microsoft Security Blog
人人都是产品经理
人人都是产品经理
N
News | PayPal Newsroom
The Cloudflare Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
I
InfoQ

博客园 - qy1141

Mysql插入Emoji表情出错 spring+mybatis事务不起作用的原因 安卓开发随记 springmvc + spring + ibatis + mysql Eclipse中配置svn J2EE环境配置与工具使用 SqlServer数据库空间使用情况常用命令 数据库备份与还原 关于数据库优化杂技 windows2008吃尽内存的解决办法 asp.net中http提交数据所遇到的那些坑 在C#中使用消息队列RabbitMQ 重新开博 WCF Security系列(1)--Security概述 如果为网站生成自签名SSL证书 关于证书 转:最真实的2006年应届毕业生真实薪水 转:如何修复Team Foundation Server Workgroup Edition 不小心删除了所有Team Foundation Licensed Users组内用户问题 转 :TFS(Team Foundation Server)使用经验
WCF Security系列(2)--服务器端的安全
qy1141 · 2007-12-11 · via 博客园 - qy1141

  先来看一个最简单的加法运算通过wcf来实现。 

namespace Contract
{
    [ServiceContract]
    
public interface IService
    
{
        [OperationContract]
        
int add(int a, int b);
    }

}


public class Service:Contract.IService
    
{
        
IService 成员
}

    服务端的配置文件如下:

<system.serviceModel>
  
<behaviors>
        
<serviceBehaviors>
                
<behavior name="ServiceBehavior">
                    
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="false" />
        
</serviceBehaviors>
  
</behaviors>
  
<services>
        
<service behaviorConfiguration="ServiceBehavior" name="Service.Service">
                
<endpoint binding="wsHttpBinding" contract="Contract.IService" />
                
<host>
                    
<baseAddresses>
                        
<add baseAddress="http://localhost:123/service" />
                    
</baseAddresses>
                
</host>
       
</service>
   
</services>
</system.serviceModel>

  

OK,至此我们已经建立了一个wcf的加法运算。下一步我将讲解如何为建立好的应用程序加入安全机制。
  我们可以通过在服务器端配置证书来加密和解密传输数据来保证数据的完整性和机密性。我们来为服务器配置证书。
  由于我在这里只做Demo演示,证书可以通过markcert.exe命令来完成,如果作为企业应用的话,请到CA申请受信任的证书。证书的介绍和制作方法在我以前写过的Blogs上可以看到。
  在WCF中可以通过将上述步骤中生成的证书以配置文件的方式添加到WCF的配置文件中,就可以实现服务器的安全,以及数据在传输中的加密和解密了。
  服务器端配置文件添加如下内容

<serviceCredentials>
   
<clientCertificate>
       
<authentication certificateValidationMode="None" />
   
</clientCertificate>
  
<serviceCertificate findValue="Guotai.WeighingSystem.ServerCA" storeLocation="CurrentUser" x509FindType="FindBySubjectName" />
</serviceCredentials>

  同样在客户端添加以下节点:

<endpointBehaviors>
   
<behavior name="NewBehavior">
                    
<clientCredentials>
                        
<serviceCertificate>
                            
<authentication certificateValidationMode="None" />
                        
</serviceCertificate>
                    
</clientCredentials>
   
</behavior>
</endpointBehaviors>

  

请注意serviceCertificate节点,由于我们建立的证书只是用来测试用,不受信任的,因此将证书验证模式设为:None,否则程序运行时报错。
  OK,现在我们已经实现了数据完整性和数据机密性。
  有兴趣的朋友,可以用Service Trace Viewer这个工具来将WCF在数据传输中所记录的日志文件打开,如果WCF服务配置了以上的安全措施,那么在这个工具中可以看到WCF传输过程中的数据都是以密文的方式传输的。Enjoy..
  在下面两节中将介绍认证和授权。