使用会话ID的WCF自定义身份验证

时间:2015-09-17 15:45:56

标签: c# wcf session authentication authorization

我需要在现有WCF服务上创建自定义身份验证/授权,该服务应该是按方法:某些方法应强制用户登录,而其他方法应允许匿名使用。该服务以单身实现。

为此,我想做以下事情:

  • 启用具有默认行为的会话,因此每个现有服务方法都将在不存在的情况下启动会话;
  • 添加登录(userName,password)方法,该方法会在Dictionary<>周围的包装中保留成功的登录artefact,并将当前会话ID用作密钥;
  • 添加logout()方法,关闭会话并从字典中删除人工制品;
  • 添加会话监视器,它将使用Dictionary<SessionId, WeakReference<OperationContext.Current>>删除会话,但未调用logout()方法。每次添加新会话时都会执行监视器。

但有两个问题:

  1. 是否有更简单的方法来实现per-method auth?
  2. 这种方法有问题吗?

2 个答案:

答案 0 :(得分:1)

几天前我遇到了类似的问题,我找到了一个解决方案。

你可以检查一下你是否想要; WCF service and adding custom Identity claims

答案 1 :(得分:0)

对于自定义授权,您应使用Custom Authorization Manager。您应该使用ASP.net管理会话,如果启用AspNet兼容性,则可以访问该会话。