All*_*lan 6 .net wcf soap web-services
我正在设计和测试WCF服务并将它们公开为SOAP Web服务.
我的逻辑上划分了我的服务类.我有一个帐户服务.要访问帐户Web服务,您必须提供用户名和密码以及API令牌.我编写了一个自定义类,将UserNamePasswordValidator扩展到taje的身份验证和IDispatchMessageInspector来检查令牌.
一个要求刚刚出现在我们想要提供一些帐户检查的地方,而无需用户进行身份验证.从逻辑上讲,这些操作应保留在帐户服务中.但是,服务行为被配置为需要用户名,密码并且具有IServiceBehavior,其添加IDispatchMessageInspector以检查令牌的所有按摩.
我一直在通过扩展调度程序审查所有不同的扩展点- Microsoft 和 WCF可扩展性 - Carlos Figueira
我似乎找到了一种只在操作级别应用安全性的方法.或者是一种配置服务的方法,因此某些功能需要安全性/令牌而其他功能则不需要.
我是WCF的新手,所以它可能很简单,但我还没有找到它.如果您知道一篇文章介绍如何以不同方式保护服务的不同部分,或者如果您知道如何,请向我提供一些信息.谢谢.
当您想要在操作级别允许/拒绝权限时,您可以使用PrincipalPermission属性设置您的方法。
\n\n你可以这样使用:
\n\n[PrincipalPermission(SecurityAction.Demand,Authenticated=false)]\nvoid NotAutenticationRequiredMethod()\n[PrincipalPermission(SecurityAction.Demand,Authenticated=true)]\nvoid AuthenticationRequiredMethod()\nRun Code Online (Sandbox Code Playgroud)\n\n当您想要更多 \xe2\x80\x9cflexible\xe2\x80\x9d 时,您还可以使用角色,因此不需要重新编译:
\n\n[PrincipalPermission(SecurityAction.Demand, Role = "CustomRole")]\nRun Code Online (Sandbox Code Playgroud)\n\n您可以在此处阅读更多信息:https://msdn.microsoft.com/en-us/library/ff649821.aspx
\n\n在方法级别,您还可以检查OperationContext.Current.ServiceSecurityContext对象,以验证请求是否来自经过身份验证的用户并做出一些决定。
\n\n请记住,SecurityContext可以有不同的身份验证:
\n\nstring primaryIdentity = OperationContext.Current.ServiceSecurityContext.PrimaryIdentity.Name;\n\nstring windowsIdentity = OperationContext.Current.ServiceSecurityContext.WindowsIdentity.Name;\nRun Code Online (Sandbox Code Playgroud)\n\n在此处了解更多信息:https://sankarsan.wordpress.com/2010/07/25/identity-securitycallcontext-in-wcf/ \n
\n\n希望能帮助到你。
\n| 归档时间: |
|
| 查看次数: |
158 次 |
| 最近记录: |