我们开始设计一大堆要创建的新服务(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相关问答推荐

如何在 GridView 单元格中的(即
)中呈现解码的 HTML

将 NUnit 添加到 ASP.NET MVC 测试框架的选项中

httpCompression 和 urlCompression 有什么区别?

.NET 站点如何隐藏其文件的 .aspx 扩展名?

IIS 将旧用户名返回到我的应用程序

无法读取配置部分system.servicemodel,因为它缺少部分声明

有没有一种简单的方法可以将对象属性转换为字典

在程序集中找不到上下文类型

使用 NancyFx 的好处?

如何设置asp.net身份cookie过期时间

在不知道键名的情况下访问 JSON 对象的元素

ASP.NET 中的 <%# Bind("") %> 和 <%# Eval("") %> 有什么区别?

ASP.NET vNext 与主机无关,这意味着什么?

如何在 ASP.NET Core Web API 中配置 JSON 格式的缩进

如何忽略身份框架的魔力,只使用 OWIN 身份验证中间件来获取我寻求的声明?

如何使用 encodeURIComponent() 解码在 JS 中编码的 HTML?

解析器错误:此处不允许使用_Default,因为它没有扩展类System.Web.UI.Page和 MasterType 声明

Visual Studio 2013 ASP.NET 项目中 Antlr 包的用途是什么?

如何在不遍历每个循环的情况下从字典对象中获取所有键(仅键)

ASP.NET MVC2/3 中runAllManagedModulesForAllRequests的正确用法是什么?