【问题标题】:Best way to handle WCF message authentication in the cloud (C#)在云中处理 WCF 消息身份验证的最佳方法 (C#)
【发布时间】:2011-04-11 22:17:39
【问题描述】:

我查看了许多资源,找到了许多示例,但没有一个真正适合我希望将项目带到的情况。我正在编写一堆 WCF 服务,其中一些是可公开访问的,而另一些则不是(服务器到服务器),这将允许一个完全灵活的云应用程序,确保能够通过 Azure 根据需要扩展服务。我不确定消息身份验证采用哪种方式,因为我想确保特定用户登录,可以执行不同的任务,并阻止其他人运行这些任务。

我看到的大部分内容都使用角色或 ASP.NET 成员资格。我有自己的自定义会员用户将用于登录,我不依赖标准会员提供商或活动目录。你的建议是什么?我考虑过创建一个在成功登录时创建的令牌,该令牌存储在 cookie 中,作为传递给每个方法的参数添加,但通过一些研究,我认为这可能无需修改我的所有方法就可以处理。

你有什么想法?

【问题讨论】:

    标签: c# asp.net wcf azure cloud


    【解决方案1】:

    您可以通过使用 UserNameAuthentication 和编写自定义验证器轻松实现身份验证,而无需手动将令牌传递到所有函数 - 有一个相当简单的教程 here

    如果您使用 UserNameAuthentication,则需要使用 SSL/HTTPS,这意味着您需要获得服务器证书 - 对于大多数业务应用程序来说,这无论如何都是个好主意。

    在服务器端可以获取当前用户的身份:
    IIdentity wic = OperationContext.Current.ServiceSecurityContext.PrimaryIdentity as IIdentity;

    【讨论】:

    • 太棒了,帮助很大!我将创建一个测试项目来更深入地研究这一点。不过,快速的问题是,一旦用户通过身份验证,我如何在未来的请求中获得这些信息?意思是,用户 123 进行了身份验证,我如何知道下一个请求是用户 123?我如何保持状态?是否将某些内容存储在 cookie 中?我确信有多种选择,但对于基于云的解决方案,我想知道最佳选择是什么?
    【解决方案2】:

    使用基本身份验证并让网络服务针对您的会员商店进行身份验证。

    【讨论】:

      猜你喜欢
      • 2018-06-23
      • 1970-01-01
      • 2012-06-17
      • 1970-01-01
      • 1970-01-01
      • 2010-09-08
      • 1970-01-01
      • 1970-01-01
      • 2018-12-13
      相关资源
      最近更新 更多