3

我正在评估上述三种身份管理技术,并想尝试找出优缺点,并了解何时应该使用 IdentityServer3 而不是其他技术。我有三种情况:

  • 内部 MVC 客户端到 Web API
  • 外部电话客户端到 Web API
  • 内部 Web API 到 Web API
4

1 回答 1

1

布洛克艾伦评论:

根据 IdentityServer 的创建者 Brock Allen:

那么,IdentityServer 的主要区别在于能够自定义整个令牌服务并控制用户数据。SaaS 产品在定制方面非常有限,因为在大多数情况下,它们不允许您上传任意代码来更改或更改行为,而且它们通常封装了用户数据库。另一方面,这意味着您必须托管 IdSvr(可以是云托管),并且您需要为您的用户构建一个数据库。所以如果你需要控制,IdSvr 是一个不错的选择。

另外,我应该注意到,IdSvr 经常与其他身份提供者(如 ADFS 或 AAD)结合使用。IdSvr 部署在应用程序和最终 IdP 之间,通常是为了允许应用程序需要的自定义,但仍然集中和整合。

资源

我自己的发现

免责声明:我研究了这个供我工作的公司使用,他们有我必须迎合的现有基础设施,所以我选择的解决方案偏向那个方向。尽管如此,在我的研究过程中,我还是试图对自己的想法进行公正的总结。

Azure 活动目录

Azure Active Directory 是一种托管身份解决方案,因此设置要少得多(尤其是如果像我一样,您发现您已经将它用于 Office 365)。开箱即用,它提供了一些非常好的功能,可以让您快速入门。

高级版具有监控和报告功能(Connect Health),因此您可以看到谁正在登录您的系统,它有两个因素身份验证,一个身份管理网站和微软正在监控登录(有点像 cloudflare 的身份),所以它应该理论上提供了一些额外的安全性。但是,UI 的定制是非常基础的,您必须为高级功能付费,并且使用 Azure 门户进行身份管理(如果您使用免费版本)有点痛苦。

文档非常好,GitHub 上有一些示例,Microsoft 开发人员积极监控这些问题,这很有帮助。我发现一些有用的链接:

身份服务器

IdentityServer 是身份管理的瑞士军刀。它可以做任何事情,但需要少量的设置和更多的身份空间知识。它可以做我上面列出的大多数事情,甚至更多。

需要注意的是,即使您使用的是 Azure Active Directory,可能仍然有选择我最初没有考虑过的 IdentityServer 的原因。例如,如果您有多个用户数据源,例如您正在使用 AD 以及用户的 SQL 数据库,则 IdentityServer 可用于指向这两个用户信息源。从理论上讲,它还应该更容易从 AD 切换到其他东西,因为它可以解耦事物。

该项目正在积极开发中,具有所有身份验证流程的代码示例,您可以从社区获得答案。我发现一些有用的链接:

身份验证流程

事实:安全很难。有许多不同的方式进行身份验证,称为流程。我把这个链接放在这里是因为我发现它对理解它们非常有用。

身份验证流程
(来源:azurecomcdn.net

概括

尽管我工作的公司使用 AWS,但我对 AWS Directory Services 打了折扣,因为它还很年轻。我们还使用 Office 365,所以我发现我们已经有一个 Azure Active Directory 链接到本地​​ Active Directory 服务器。即便如此,由于我上面解释的原因,IdentityServer 仍然是一个有效的竞争者。我们仍在尝试这两种解决方案...

您决定选择什么完全取决于您遇到的问题。你应该选择哪个?好吧,这取决于您可以花费多少开发人员、时间、金钱和精力来设置它。没有一种适合所有解决方案的尺寸。确实,上述两种产品的差异是SaaS和PaaS解决方案之间的差异。

于 2016-03-06T16:58:34.350 回答