wcf

[WCF权限控制]基于Windows用户组的授权方式[上篇]

邮差的信 提交于 2020-03-07 09:32:24
Windows用户组安全主体权限模式,顾名思义,就是将利用Windows安全系统将对应的Windows帐号所在的用户组作为该用户权限集的授权方式。认证和授权密不可分,但是对于认证和授权在WCF安全体系中的实现来说,它们则是相对独立的。认证属于安全传输的范畴,是在信道层实现的,而授权则是在服务模型层实现的。但是对于基于Windows用户组的授权来说,最终体现出来的授权行为却和采用何种认证具有密切的关系。 一、Windows用户组授权与认证的关系 无论是对于基于Windows用户组还是基于ASP.NET Roles提供程序的授权,最终都体现在创建相应的安全主体,并将其附加到当前线程上。对于Windows用户组模式来说,有一点是肯定的:不论采用何种客户端凭证类型以及认证模式, 最终建立的安全主体都是一个WindowsPrincipal,并且这个WindowsPrincipal对应的安全身份是一个WindowsIdentity 。但是该WindowsPrincipal的Identity能否正确地反映被认证后的用户,以及其本身能够正确反映该认证用户的权限,就和认证有密切的关系。 具体来说, 当你选择了Windows用户组安全主体权限模式,只有在采用Windows认证的情况下最终生成的安全主体才能正确地反映被认证的用户 。这里的Windows认证包括如下三种情况:

[WCF权限控制]基于Windows用户组的授权方式[下篇]

喜夏-厌秋 提交于 2020-03-07 09:31:56
为了让读者对基于Windows用户组的授权具有深刻的认识,接下来我们通过一个简单的事例来讲解在真正的应用中该授权模式如何使用。对于接下来演示的事例,我们将采用Windows认证和授权。至于授权的最终实现,我们采用的是在服务方法上面应用 PrincipalPermissionAttribute 特性方式的声明式授权。[源代码从 这里 下载] 目录: 步骤一、创建测试帐号 步骤二、创建服务契约和服务 步骤三、寄宿服务 步骤四、创建客户端程序 步骤一、创建测试帐号 在创建事例解决方案之前我们先完成相应的准备工作,创建两个测试用的Windows帐号。假设两个帐号的名称分别为Foo和Bar,密码为Password。然后 将帐号Foo添加到管理员(Administrators)用户组中 。 步骤二、创建服务契约和服务 我们依然沿用我们再熟悉不过的计算服务的例子,解决方案依然按照如下图所示的结构来设计。整个解决方式包括四个项目:Contracts、Services、Hosting和Client。对于这样的结构我们已经了解得够多了,在这里没有必要再赘言叙述了。 在实例解决方案的整个结构建立之后,我们分别在Contracts和Services项目中定义服务契约接口和服务类型。下面是契约接口ICalculator和服务CalculatorService的定义

WCF---服务发布的步骤

风流意气都作罢 提交于 2020-03-07 08:08:28
服务发布的步骤: 1、打开你的VS2012网站项目,右键点击项目》菜单中 重新生成一下网站项目;再次点击右键》发布: 2、弹出网站发布设置面板,点击<新建..>,创建新的发布配置文件: 输入你自己定义的配置文件名: 3、点击下一步:在发布方法中选“文件系统”,这样我们可以发布到自己指定的本机文件上。 选择自己指定的文件夹:通过点击下图中右上角红色箭头处创建新的文件夹,自定义命名(我的就写WebSite)。点击打开,进入下一步 4、 在配置中,要选择“Release”——发布模式(Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序) 5、点击下一步:进入发布前的预览界面 点击发布即可以发布你指定的文件夹中,这里,我发布的是C盘下的WebSite文件夹中。 发布成功后,点开文件夹,所有页面的.cs文件都消失了, 都去哪里了呢?是bin文件夹里面吗?大家猜一猜。 发布好的截图: 6、通过》控制面板》管理工具》启动 ‘Internet信息服务(IIS)管理器’ 进入IIS界面。 右键单击网站》添加网站 7、下面图中,左边红色方框内输入自定义的网站名称(请尽量用英文,这里我就写MyPhotoSite),右边红色箭头处需要点击 ‘选择(E)…’

wcf rest : by using “BodyStyle = WebMessageBodyStyle.Wrapped”, I am not able to see object parameters in browser

你说的曾经没有我的故事 提交于 2020-03-06 05:58:05
问题 I have one method "CreateAccount" as mentioned below [OperationContract] [WebInvoke(UriTemplate = "CreateAccount", Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped)] public CreateAccountServiceResponse CreateAccount(AuthenticateApplication Application, ApplicationCustomer Customer, CustomerService Service, Option Options) { // Some Implementation } If I am using BodyStyle = WebMessageBodyStyle.Wrapped then

wcf rest : by using “BodyStyle = WebMessageBodyStyle.Wrapped”, I am not able to see object parameters in browser

前提是你 提交于 2020-03-06 05:55:39
问题 I have one method "CreateAccount" as mentioned below [OperationContract] [WebInvoke(UriTemplate = "CreateAccount", Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped)] public CreateAccountServiceResponse CreateAccount(AuthenticateApplication Application, ApplicationCustomer Customer, CustomerService Service, Option Options) { // Some Implementation } If I am using BodyStyle = WebMessageBodyStyle.Wrapped then

wcf rest : by using “BodyStyle = WebMessageBodyStyle.Wrapped”, I am not able to see object parameters in browser

被刻印的时光 ゝ 提交于 2020-03-06 05:53:12
问题 I have one method "CreateAccount" as mentioned below [OperationContract] [WebInvoke(UriTemplate = "CreateAccount", Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped)] public CreateAccountServiceResponse CreateAccount(AuthenticateApplication Application, ApplicationCustomer Customer, CustomerService Service, Option Options) { // Some Implementation } If I am using BodyStyle = WebMessageBodyStyle.Wrapped then

用Console做WCF的宿主

拟墨画扇 提交于 2020-03-06 00:08:22
这两天在研究怎么通过Console来创建WCF,并执行所需的功能。初步已经能够写简单的案例,想通过博客记录一下用Console做WCF宿主的流程: 新建控制台程序 新建WCF服务 在service1的文件中,增加WCF的后台逻辑 在控制台应用程序中,新增Host服务,当控制台启动的时候,将启动WCF 启动控制台,验证WCF是否已经启动->通过App.config中的baseAddress进行验证,如果WCF已经启动,则baseAddress能够顺利打开: 新建客户端调用WCF 新建一个winform来调用WCF的服务: 添加服务引用->引用上图的service地址 在winform中书写调用WCF逻辑: 启动winform,点击按钮,调用wcf 验证调用WCF的结果 到此已经结束,希望能给你带来帮助。 参考地址: https://www.bbsmax.com/A/Ae5RY9o8JQ/ https://www.cnblogs.com/secdsp/articles/1725913.html 来源: CSDN 作者: Perry_Zha 链接: https://blog.csdn.net/Perry_Zha/article/details/104684213

WCF service sometimes rejects client credentials

无人久伴 提交于 2020-03-05 07:32:07
问题 I have a WCF service that creates its own secondary IP (using netsh ) upon startup and listens on that IP. Sometimes it just so happens that the when server starts listening clients from the same machine can't connect (client credentials are rejected). From other machines, however, there are no such connection problems. When starting service on the original IP, connection problems don't seem to occur, but the non-deterministic behavior of the previous scenario prevents me from making any

WCF编程系列(二)了解WCF

我只是一个虾纸丫 提交于 2020-03-05 07:26:15
面向服务 服务是复用进化的结果,起初的复用是函数,面向对象编程的出现使复用从函数上升到对象,随后面向组件编程又将复用从对象上升到组件,现在面向服务编程将复用提升到服务层次。 在面向服务的应用程序中,开发者只需要关注业务逻辑的编写,以及通过可交换的、可互操作的服务终结点暴露业务逻辑。客户端调用这些终结点,而不是服务代码或它的实现包。客户端与服务终结点的交互基于标准的消息交换,服务发布各种标准元数据,描述服务的功能,以及客户端调用服务操作的方式。正因为是基于标准的交互,所以实现服务端与客户端的技术与品台可以完全不同。 WCF的优势 在WCF之前,.NET Framework提供了多种分布式技术,如ASP.NET Web服务、.NET Framework远程处理、企业服务、WSE以及Microsoft消息队列。一般我们在编写一个应用程序时通常会同时使用多项技术,现在WCF已经将这些技术整合,通过WCF即可实现这些技术的所有功能。 WCF的基本通信机制是基于SOAP的Web服务,因此基于WCF的应用程序可以与运行在各种不同坏境中的软件进行通信: 1.运行在同一台Windows计算机的不同进程中、基于WCF的应用程序 2.运行在另一台Windows计算机的基于WCF的应用程序 3.基于J2EE应用服务器等其他技术构建的、支持标准Web服务的应用程序。 WCF的体系结构 如上图所示

Can creating a new WCF client for each request in ASP.NET Core lead to socket exhaustion?

夙愿已清 提交于 2020-03-04 19:37:31
问题 This article shows a well-known problem with HttpClient that can lead to socket exhaustion. I have an ASP.NET Core 3.1 web application. In a .NET Standard 2.0 class library I've added a WCF web service reference in Visual Studio 2019 following this instructions. In a service I'm using the WCF client the way it's described in the documentation. Creating an instance of the WCF client and then closing the client for every request. public class TestService { public async Task<int> Add(int a, int