ASP.NET Core的DocumentDb标识提供程序

时间:2016-08-25 16:02:14

标签: asp.net-core

我正在尝试使用后端的DocumentDb向用户提供授权 - 但我无法找到有关相同的任何资源。提供的文档适用于基于SQL的文档(https://docs.asp.net/en/latest/security/authentication/identity.html)。

任何帮助?

3 个答案:

答案 0 :(得分:18)

为了给您提供一个起点,在查看使用 ASP.Net Core 的身份时,需要记住几个重要问题:

框架兼容性

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

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

<强>&#39;标识&#39;版本

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

无正式实施

微软决定不为ASP.Net Identity创建官方的DocumentDB实施,理由是“有两个社区项目可供使用”。 (参考here

第三方支持

在可用的第三方实现中,Adrian Fernandez的this one是使用Microsoft本机DocumentDB客户端为ASP.Net Identity 3 提供支持的最广泛使用。样本包含在GitHub存储库中。 ( 请参阅下面的更新。

使用示例

可以找到将此DocumentDB提供程序与ASP.Net一起使用的示例,包括其他功能,here

可以找到使用ASP.Net Core和Microsoft DocumentDB提供程序的另一个示例here

我为DocumentDB编写了自己的Identity 3提供程序;如果我在GitHub上发布这个,我会用链接更新这个答案。

更新2017年4月19日

对于那些寻求解决方案的人,我现在推荐 Bernhard Koenig AspNetCore.Identity.DocumentDb项目。它功能齐全,包括单元测试和示例ASP.Net核心项目。也可以通过Nuget获得。它支持netstandard1.6net46个人资料。

答案 1 :(得分:1)

我的理解是微软可以将Mongo驱动程序与DocumentDb一起使用,所以也许你可以使用这个Mongo implementation for asp.net core identity

或谷歌进一步了解其他人可能在这方面做过的现有工作。

要自己实施,您需要至少实施IUserStoreIRoleStore,您还可以参考EF实施UserStoreRoleStore获取有关实施的灵感和指导那些。

答案 2 :(得分:0)

最好的解决方案是使用DocumentDB提供程序来构建.NET Core Identity框架。但到目前为止,我没有创建AspNetCore.Identity.DocumentDB并决定在MIT许可下将其发布到GitHub上。

它是.NET Core Identity的现有mongodb提供程序的端口,并存储Claim,Tokens&amp;登录为嵌套对象。虽然可以将DocumentDB与mongodb接口一起使用,但如果可能的话,建议使用本机SDK。

该库已经非常稳定,可以作为NuGet包使用。

<强>注意: DocumentDB SDK for C#本身不支持.NET Core作为稳定版本中的目标平台。 幸运的是 Microsoft已经在努力添加.NET Core支持并发布了DocumentDB SDK的预览版,其中包含:Connect()的.NET Standard支持; 2016年活动。 AspNetCore.Identity.DocumentDB支持两种SDK。

.NET Standard是API的规范,应该可以在所有.NET运行时上使用,并且目前受.NET Core和.NET Framework支持。

相关问题