在 DDD 中公开 ASP.NET 身份服务

Posted

技术标签:

【中文标题】在 DDD 中公开 ASP.NET 身份服务【英文标题】:Exposing ASP.NET Identity Services in DDD 【发布时间】:2015-09-20 09:07:48 【问题描述】:

我们正在开发一个使用 ASP.NET MVC、C# 和 EF6 开发的基于 DDD 的应用程序。已决定使用 ASP.NET 身份服务实现身份验证和授权...我对此有一些疑问;

身份验证/授权服务属于哪个类别。是应用程序、域还是基础架构服务?

我的理解是我们应该为身份验证/授权创建一个单独的 DBContext。我的理解正确吗?

谁能指导我一个好的示例实现?

【问题讨论】:

这是我们使用的一篇很好的背景文章:typecastexception.com/post/2014/04/20/… 【参考方案1】:

    我会说它是应用程序层,尽管这是有争议的,它有什么区别?不要进入Architecture Austronancy 就去做。 Auth 可以是域的一部分(“只有具有更新权限的用户才能更改产品详细信息”等),但它可能无关紧要。

    是的,您可以创建一个单独的 DbContext,但您不必这样做。我们曾经将所有内容都放在一个庞大的上下文中,但事实证明这太多且难以处理,我们现在将 DbContext 拆分为多个切片,包括 Identity DbContext。

【讨论】:

【参考方案2】:

我猜想用户管理是一个不同的有界上下文,并且在所有其他有界上下文中使用某些框架的身份验证和授权机制将是基础架构的责任。

当然,您应该有一个应用程序服务接口来验证用户,然后再驱动一些域逻辑。 该接口实现将在基础架构中(ASP.NET 身份服务)

【讨论】:

以上是关于在 DDD 中公开 ASP.NET 身份服务的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ASP.NET Core 2.0 中根据路由配置服务身份验证

身份服务器 4、Asp.net 身份和

在 C#、asp.net、windows 身份中模拟

地理服务器中的身份验证 - asp.net 中的 POST 方法

如何在 ASP.Net MVC 应用程序中使用来自 WCF 身份验证服务的身份验证 cookie

在 WCF 服务中使用 ASP.NET 成员资格提供程序身份验证