ASP.NET Core的DocumentDb身份验证提供程序

6

我有一个项目使用相同的东西,可以查看 https://github.com/arunselvakumar/jericho - Arun Selva Kumar
3个回答

18
为了给你提供一个起点,在考虑使用身份验证(Identity)和ASP.Net Core时,需要记住几个重要问题:

框架兼容性

你提到将使用ASP.Net Core,可以与.Net Core或'完整的'.Net Framework(例如.Net Framework 4.5.1)一起使用,并可在project.json下的frameworks属性中指定。

Microsoft DocumentDB本机.Net客户端不支持.Net Core;因此,您必须将ASP.Net Core配置为针对'完整的'.Net Framework。如果您不确定如何操作,可以在Visual Studio 2015中创建一个新项目,并选择“ASP.Net Core(.Net Framework)”项目模板;project.json将为您正确配置framework属性。

'Identity'版本

有几个版本的ASP.Net Identity;在选择提供程序时要注意,大多数当前引用ASP.Net Identity 2.2.1;然而,最新版本是3,与ASP.Net Core一同发布,由NuGet包Microsoft.AspNetCore.Identity 1.0.0支持,具有一些差异和附加功能。(请注意,您可以将此后者包与完整的.Net Framework一起使用。)

没有官方实现

Microsoft决定不为ASP.Net Identity创建官方的DocumentDB实现,理由是“有两个社区项目可用”(参考这里

第三方支持

在可用的第三方实现中,Adrian Fernandez开发的这个实现是最常用的提供对使用Microsoft原生DocumentDB客户端的ASP.Net Identity 3的支持。GitHub代码库中包含示例。(请参见下面的更新。示例用法 在此处可以找到一个使用此DocumentDB提供程序的ASP.Net示例,包括其他功能:链接
还可以在此处找到另一个使用Microsoft DocumentDB提供程序的ASP.Net Core示例:链接我已为DocumentDB编写了自己的Identity 3提供程序;如果我在GitHub上发布了此项目,我将使用链接更新此答案。 更新于19/04/2017 对于那些正在寻找解决方案的人,我现在推荐使用Bernhard Koenig的AspNetCore.Identity.DocumentDb项目。它具有完整的功能、单元测试和一个示例ASP.Net Core项目,并且可以通过Nuget获得。它支持netstandard1.6net46配置文件。

非常感谢你详细的回复,兄弟,帮了我很多 :-) - Arun Selva Kumar
2
请发布您的 Identity 3 提供程序。 :-) - Holf
1
@Holf,很抱歉我无法这样做,因为它是商业产品的一部分。不过,我已经更新了我的答案,包括一个链接,指向我目前认为最完整的开源项目,我会推荐使用它。 - dmcquiggin
这个AspNetCore.Identity.DocumentDb正是我所需要的,谢谢提供信息! - vip32

1

作为FYI,链接的项目是特定于ASP.Net Identity版本2.2.1的,这不是最新版本。就像DocumentDB客户端一样,MongoDB客户端也与.Net Core不兼容(它可以在*.Net Framework*上与ASP.Net Core一起使用)。我在另一个答案中扩展了一些信息。这里可能也有一些关于“Core”的混淆。提到的项目引用了'Microsoft.AspNet.Identity.Core' version="2.2.1" targetFramework="net45";这与ASP.Net Core无关。 - dmcquiggin
是的,我的错,它说的是“新”的ASP.NET身份验证,我没有仔细看,我只是更新了我的答案中的链接,指向这个针对.NET Core的 https://github.com/tugberkugurlu/AspNetCore.Identity.MongoDB。 - Joe Audette
没有问题,这个Core标签被严重滥用并引起了混淆。我个人不会选择尝试使用MongoDB实现,因为已经有一个支持角色提供程序的DocumentDB实现(链接在我的回答中)。MongoDB驱动程序的兼容性重点是帮助人们将现有的基于MongoDB的应用程序迁移到DocumentDB,而不是作为本地DocumentDB客户端的替代品,后者已经非常优化(这也是它尚未移植到.Net Core的原因 - 它需要Framework功能)。 - dmcquiggin
同意,如果有适用于DocumentDb的工作方案,那就采用它,你的答案比我的更好。 - Joe Audette

0

最好的解决方案是使用.NET Core Identity框架的DocumentDB提供程序。但迄今为止还没有,这就是我创建AspNetCore.Identity.DocumentDB并决定在GitHub上以MIT许可证发布它的原因。

它是现有的.NET Core Identity mongodb提供程序的端口,将Claims、Tokens和Logins存储为嵌套对象。虽然可以使用mongodb接口使用DocumentDB,但建议尽可能使用本机SDK。

该库已经相当稳定,并作为NuGet包提供。

注意: C#的DocumentDB SDK本身不支持.NET Core作为目标平台的稳定版本。幸运的是,微软已经在添加.NET Core支持,并在Connect(); 2016事件中发布了一个带有.NET Standard支持的DocumentDB SDK预览版。 AspNetCore.Identity.DocumentDB支持两个SDK。

.NET Standard是一种API规范,应该在所有.NET运行时中可用,目前由.NET Core和.NET Framework支持。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接