将自定义用户对象传递给 WCF
我已经实现了一个自定义 ASP.net 成员资格提供程序来处理表单身份验证。自定义提供程序使用自定义用户对象进行身份验证和授权。我想知道是否可以将此对象传递给每个 WCF 调用而不将其添加到参数列表中?
I've implemented a custom ASP.net membership provider to deal with forms authentication. The custom provider uses a custom User object for authentication and authorization. I was wondering If I can pass this object to each WCF call without adding it to the parameters list?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
由于您已经在使用 MembershipProvider,因此您也可以在 wcf 上使用它,因此两者都由相同的机制保护。
请参阅 msdn 上的这篇帖子。
另一种选择是创建一个自定义
IAuthorizationPolicy
,通过以下方式获取您的用户,而不是设置您的主体:
以下是有关创建自定义 IAuthroizationPolicy。使用此方法,您可以实现您想要的目标,而无需将用户传递给该方法。
请注意,如果您走这条路,狡猾的人可能会通过简单地在标头中提供虚假用户来冒充用户。
使用 wcf 的 asp.net 会员资格提供程序很可能会满足您真正的需求,并添加一些安全性。
Since you are already using a MembershipProvider you can utalize that on wcf as well so both are secured by the same mechanism.
See this post on msdn.
Another option would be to create a custom
IAuthorizationPolicy
that pulls off your user viaAnd than setup your principal like the following:
Here is some more information on creating a custom IAuthroizationPolicy. With this method you could achieve what you want without passing your user to the method.
Just be warned if you go this route a crafty person could end up impersonating the user by simply suppling a bogus user in your header.
Using the asp.net membership provider for wcf would most likely get you what you are really after plus adding some security.
您绝对不应该将其添加到每个方法的参数中。
我不知道您的自定义用户对象,但就 WS* 和大多数相关安全标准而言,您的用户对象将具有用户名和密码。
答案取决于您使用的绑定。
BasicHttpBinding
或BasicHttpContextBinding
可以使用 HTTP 身份验证方案,而WsHttpBinding
可以使用自定义消息安全性,您可以提供用户名和密码。BasicHttpContextBinding
特别好,因为它可以与 ASP NET 会话一起使用。You definitely should not add this to the parameters each method.
I do not know about your custom user object but as far as WS* and most security standards concerned, your user object will have username and password.
The answer depends on the binding you use.
BasicHttpBinding
orBasicHttpContextBinding
can use HTTP authentication schemes whileWsHttpBinding
can use custom Message security which you can provide user name and password.BasicHttpContextBinding
is especially good since it can work with ASP NET session.