我们开始设计一大堆要创建的新服务(WCF、ADO.NET数据服务,可能在某个时候在云中),弹出的一个问题是使用哪种身份验证和授权方案-有相当多!

我们基本上需要能够识别各种协议(HTTP、HTTPS、TCP)上的用户(实际用户和"虚拟"应用程序/服务用户),我们需要为他们分配至少一组角色/权限,以查看特定数据和/或执行特定操作.

我们绝对不能单独使用Windows组成员资格-我们的服务有很多外部消费者,我们不想在内部域中为他们中的每个人设置一个域帐户.

我认为主要有三种 Select :

  1. 使用ASP.NET会员制-在那里创建用户并分配角色
  2. 使用AzMan(授权管理器),它似乎是一个更精细、更成熟、更精细的系统(有用户、任务、组——三个级别,而不仅仅是用户+角色)
  3. 我们自己滚吧

首先,你会推荐这三个中的哪一个?有什么原因吗?

第二,我还缺少更多的 Select 吗?

感谢您的任何提示、指点和意见!

MARC

PS:看到到目前为止的答案,我对投票给选项3的人的数量感到惊讶.我本以为微软能够设计出可以处理所有这些需求的可重用的东西.

推荐答案

实际上,答案可能是1和3的组合.

如果默认选项没有达到您想要的程度,您可以通过编写membershiproleprofile提供程序来利用框架为您提供的许多工具和功能.

我们在很多客户端网站上都这么做了——例如,我们的一个客户端将其大多数用户存储为Commerce Server用户,并使用Commerce Server配置文件系统,因此我们编写了一个成员资格和配置文件提供器来与这些数据存储进行对话——这是一个相当简单的练习.


大多数人可能会 Select 3,因为需要通过原始TCP进行身份验证——这引入了一个超出标准ASP.NET成员资格提供者的层.

微软生产的大多数产品都是"ok"或"足够好",但总会有一些边缘 case ,你想做一些"不太标准"的事情,这意味着你最终会自己动手.我想除了"基本授权"或"Windows授权"之外,还有一些东西对普通开发者来说很容易理解,他们 Select 了"让我们为web构建这个"的明智 Select .

如果你看一看可以针对WCF服务进行身份验证的多种方法,你就会明白我的意思——这are种方法设计用于处理不同的传输机制,因此要复杂得多.

也就是说,默认角色和配置文件提供程序相当有限(角色:没有层次 struct ,所以需要判断每个可能的角色,或者显式地将每个角色分配给用户;配置文件:所有角色都以逗号分隔的值存储在一个字段中——不容易找到所有具有值集的用户).

Asp.net相关问答推荐

如何处理当前文件中基本文件中的S onClick方法

使用 aspnet core SignalR 客户端为 VSIX 项目.

Swashbuckle 通过 .NET 应用程序中的 XML 注释使用格式标识符

目前不支持超过 65534 个段的跨区存档

返回 HttpResponseMessage 时的 WebAPI Gzip

用于 ASP.NET 的 System.Drawing 的替代品?

'Microsoft.ACE.OLEDB.12.0' 提供程序未在本地计算机上注册.

ASP.NET MVC 5 中的路由可选参数

ASP.NET 日期时间 Select 器

如何在 IIS 7.5 上使用 ASP.NET 表单身份验证保护静态文件?

在asp.net mvc 3中实现FilterAttribute,IActionFilter和从ActionFilterAttribute继承有什么区别?

如何针对异常需求自定义 ASP.NET Web API AuthorizeAttribute

单击按钮时播放哔声

web.config 中与 targetFramework 相关的配置错误

为什么 HttpWebRequest 会抛出异常而不是返回 HttpStatusCode.NotFound?

在 Visual Studio 2010 中随机禁用编辑 aspx/ascx 文件?

StyleBundle 索引超出了数组的范围

GZIP 与 DEFLATE 压缩相比有什么优势?

可以在不 destruct 站点的情况下将 MIME 类型添加到 web.config 吗?

ASP.NET 邮箱验证器正则表达式