如何使用声明感知用户名/登录授权为我的WCF服务创建本地STS?

时间:2016-05-30 16:47:20

标签: c# .net postgresql wcf wif

  1. 我有需要声明权限授权的WCF服务(如can-create-resource-X,can-edit-resource-Y等)。
  2. 授权应该是基于用户名/密码,没有Windows身份。
  3. 我需要将授权逻辑和数据本地保存到服务器,托管WCF服务。
  4. 授权数据应存储在PostgreSQL而不是SQL Server中。
  5. 首先,我将根据"学习WCF实现基于声明的安全性。动手指南",使用pgProvider作为基于PostgreSQL的ASP.NET成员资格提供者的替代品。但是我偶然发现了ClaimsPrincipal在我正在使用的.Net 4.5中被重新定义(以及Claims)。

    然后我发现WIF现在被推荐为主要设备用于授权目的。到目前为止,我试图绕过WIF,我找不到任何有关本地使用的有效STS的提及。我唯一提到的是Local Development STS,但据我所知,它仅用于开发和测试目的,而不是用于生产。

    我考虑过创建自定义STS,但根据谷歌的说法,它并不是我的首选。对于具有本地用户名/密码授权的看似简单的目的来说,这似乎确实是一种过于复杂的方法。

    那么我该如何为我的WCF服务创建基于声明的授权?我有没有找到当地的STS?我应该忘记WIF并编写自己的授权逻辑吗?还有什么吗?

2 个答案:

答案 0 :(得分:2)

VS 2010和VS 2012拥有生成本地STS的工具,但是,不是生产。

基本问题是,与浏览器访问(WS-Fed被动配置文件)相比,很少有人使用WCF(WS-Fed活动配置文件)。

所以我不知道你可以使用任何STS。

您可以考虑Give your WCF Security Architecture a Makeover with IdentityServer3

答案 1 :(得分:0)

我的错误。
"学习WCF中提到的ClaimsPrincipal。动手指南"不是我认为的框架类 - 它是一个自定义程序员创建的类。在较新的.NET框架版本中,我被一个同名的类误导了。