Aspnetcore: 2.2 路线图讨论

创建于 2018-06-25  ·  117评论  ·  资料来源: dotnet/aspnetcore

2.2 Roadmap公告讨论: https :

最有用的评论

路线图看起来不错,尤其是健康检查和 HTTP 2.0。 但是,以最友好的方式,我不同意构建一个简单的第一方 Microsoft 授权服务器的必要性。 IdentityServer4 很好地填补了这一空白,重新实现它的更简单版本所花费的时间本可以更好地花在其他地方。 我知道目标是提供一个简单的解决方案,但身份验证很难,IdentityServer 提供了一个非常简单的 API。 如果有更简单抽象的想法,它可以建立在 IdentityServer 之上,这样人们就可以使用简单的抽象,但在需要时可以使用它。

更新

在 ASP.NET Community Standup 中,提到 ASP.NET Core 团队正在与 Identity Server 团队讨论选项,包括在 Identity Server 之上构建一些东西。 我想这就是我们都想要的,做得好!

所有117条评论

EF Core 2.2 路线图怎么样?

EF Core 2.2 路线图怎么样?

https://github.com/aspnet/Announcements/issues/308

路线图看起来不错,尤其是健康检查和 HTTP 2.0。 但是,以最友好的方式,我不同意构建一个简单的第一方 Microsoft 授权服务器的必要性。 IdentityServer4 很好地填补了这一空白,重新实现它的更简单版本所花费的时间本可以更好地花在其他地方。 我知道目标是提供一个简单的解决方案,但身份验证很难,IdentityServer 提供了一个非常简单的 API。 如果有更简单抽象的想法,它可以建立在 IdentityServer 之上,这样人们就可以使用简单的抽象,但在需要时可以使用它。

更新

在 ASP.NET Community Standup 中,提到 ASP.NET Core 团队正在与 Identity Server 团队讨论选项,包括在 Identity Server 之上构建一些东西。 我想这就是我们都想要的,做得好!

ASP.NET Core WebHooks的当前计划是什么?

关于调度程序,这可以在中间件中实现吗? 😱
C# public async Task Invoke(HttpContext context, [FromRoute] SomeModel someModel)
[来自查询]?

Simple Auth Server 但也要记住 Katana simple Auth Server 发生了什么

我想回应@RehanSaeed 的担忧,并想就这个新服务器应该填充的确切用例进行一些说明。 如果这主要是为了让 Web API 有办法获取在应用程序的现有身份验证中有效的不记名令牌,那么就可以了。 但除此之外的一切可能最好留给现有解决方案,这些解决方案已经通过 IdentityServer、OpenIddict 和 AspNet.Security.OpenIdConnect.Server 等产品提供了许多不同复杂性和灵活性的选项。

IIS 进程内托管怎么样?

您能否详细说明“API 客户端生成(C# 和 TypeScript)”的 TypeScript 部分?

这将是我真正期待的事情。 目前我正在使用 NSwag 来自动生成我的 Angular 客户端 API 服务。 但是客户端配置可能有很多不同的组合,我认为这可能很难取悦每个人。

就在我的头顶上,应该考虑一些事情(如果可能的话应该是可配置的):

  • 只是带有 fetch 的 TypeScript 客户端还是带有 HttpClient 的 Angular 服务?
  • 如果是 Angular,你支持哪些版本(对 RxJS 也很重要)?
  • 空/未定义处理
  • 枚举处理
  • 日期类型的JS日期或momentjs?
  • 异常处理、验证错误处理
  • 如何在客户端扩展生成的代码?
  • 影响名称生成的可能性(例如,从生成的客户端类的 xxxDTO 或 OpenAPI 定义中删除 DTO 部分)

如果可以对功能进行投票,这些对现有中间件的改进/修复将在我的愿望清单中:

我也投票跳过授权服务器产品。 安全性很复杂,并且大力推动迁移到云服务以消除维护,任何想要更多控制的人都可以使用经过良好构建、测试、记录和支持的IdentityServer4 。 一个简单的设置需要 5 分钟,他们有大量的入门示例、视频和教程。

我看不出如何使安全性工作成为“零配置”。 看起来这只会增加更多的混乱(在命名和使用方面),同时成为另一件需要支持和维护多年的东西,不断地从其他功能上转移注意力。 请重新考虑这一点。

我也很好奇为什么 IIS 进程内托管不在这个 2.2 路线图上。 这是一大特色,是在堆栈溢出我们的发布战略和时间表这里一个主要因素,它已经被删除的2.1版本之前最后一刻,看好2.2时间表代替。 请告诉我这只是一个疏忽,而不是另一个计划变更。

编辑: @DamianEdwards在 Twitter 上回复说这确实是一个疏忽(意味着它计划用于 2.2)。 呼!

我会回应其他评论。 如果您打算投资授权/策略,特别是使其更简单,我个人更愿意看到与 OpenIddict 和 IdentityServer 之类的合作伙伴在文档和脚手架方面的投资。 我不禁感到任何工作,无论多么简单,最终都会重复出色的第三方工作,并给 aspnet 团队带来不必要的维护成本。

这可能是一个不受欢迎的观点,但我希望看到一个 Microsoft Auth 服务器,它是在公众眼中构建的,具有我们的投入和支持。

当前的——Id4、OpenIddict——显然是优秀的OSS项目,我不禁觉得,背后有MS支持的项目可能是一件坏事......?

一小群人可以获得多少支持是有限制的,毕竟这些都是关键任务产品。

我认为遗憾的是,MS OSS 行为准则没有包括这样一句话:“不要宣传那些与 Nuget 请求可以引入的东西重复的功能,这会随便破坏一个两人的业务为我们的生态系统做出贡献”。

愤世嫉俗的我不禁想知道,对于一些内部人士来说,让布洛克和多米尼克流血是这个建议的一个特点,而不是一个错误。 敢于批评 ASP 团队所做的任何事情的小型企业会遇到这种情况吗?

我也想知道除了在顶部构建某些内容(例如 UI 和文档)之外,还需要复制身份验证功能。

此外,经过良好测试的 JSON-LD 1.1 库将是路线图的一个很好的特定补充。 :)

重复其他人所说的话 - 我更愿意看到从 IdentityServer4 之类的东西中引入授权工作,而不是自己重新实施。 如果存在差距,那么肯定通过贡献、样本和提炼集成点来弥合这些差距将是更好的方法。 也许还要注意您在这个领域 (B2C) 中处于令人震惊状态的云产品。

除此之外,虽然您声明目标不是复制现有开源产品中的功能并保持简单,但这在某种程度上等同于经典的重写陷阱:“这个解决方案过于复杂,有点混乱,让我们重写它! ”。 这是天真的,在 n 个版本的时间里,我会花钱让你处理现实世界解决方案所需的许多边缘情况,而 IdentityServer 之类的东西已经在处理。

更广泛地说,随着对 GitHub 的收购,最近围绕微软对开源的态度进行了很多讨论。 微软在开源方面做了这么多工作,这很棒,但是成为一个优秀的开源公民的一部分是利用现有的开源。

这对于像你们这样的平台持有者尤其重要——一个平台持有者在现有开源产品_不鼓励_贡献中复制功能,同时参与这些产品_鼓励_贡献。

我也看不到在授权上花费的精力,但希望看到 ASP.NET Core Identity 的 _management_ 得到改进。 Damian Edwards 在 live.asp.net 上非常清楚我们不应该推出我们自己的安全性但是 - 除非我错过了 - ASP.NET Core Identity 不包含任何用户管理工具,所以我们必须推出我们自己的。 我觉得这有点可怕,因为我不是安全专家,并且非常害怕留下我自己制造的安全漏洞。

如何将内容格式化程序从 MVC 级别移动到 2.2 中的 AspNetCore.Http 抽象?

也许负责的 PM 可以更详细地描述这个 Identity Server Lite,以明确 ASP.NET 团队正在寻求解决的现有第三方开源解决方案中的哪些缺点。 因为就目前而言,您正在谈论重新发明轮子,但可能会移除一些辐条,这没有多大意义。 正如其他人所说,修复 AAD B2C 并提供一流的集成会很棒,并且对 MS 具有商业意义。

此外,您是否考虑过通过@blowdart 获得全新的、全新的 Auth 服务器产品会有多困难?

有没有像 django 这样的内置 RESTful API 支持的计划?
因为这是所有开发人员每次都倾向于编写的内容!

我最近构建了一些可以编写为通用 RESTful API 控制器的东西:

https://github.com/0xRumple/dorm-portal/blob/master/DormPortal.Web/Controllers/StudentsController.cs

也同意“我看不出如何使安全性以“零配置”的形式发挥作用”和“您正在谈论重新发明轮子,但可能会删除一些辐条”,身份服务器是一个很棒的产品,非常入门简单并为更复杂的场景提供可扩展性,不确定为什么我们需要“简化”版本。

在小得多的规模上,为什么我们需要另一个健康检查实现。 已经有几个开源解决方案,例如

这些和 2.2 中提供的功能有何不同?

@0xRumple

如果您在您的应用程序中遵循某些模式,那么在 2.2 中创建您自己的基本类型或约定是没有错的,这将为您概括工作。

@kieronlanning

当前的——Id4、OpenIddict——显然是优秀的OSS项目,我不禁觉得,背后有MS支持的项目可能是一件坏事......? 一小群人可以获得多少支持是有限制的,毕竟这些都是关键任务产品。

既然你问这是否可能是一件坏事:

ASP.NET 团队也相对较小,以有限的能力为数百万开发人员提供服务,因此任何新项目都会从其他事情上占用时间和精力。 这意味着我们都必须等待更长时间才能获得任何可能带来更多价值的全新功能。

更糟糕的是,它损害了 3rd 方生态系统并阻止了新产品,因为微软发布了一个“官方”软件包,许多公司因为它来自微软而陷入困境,即使它在技术上(在这种情况下应该是)更少有能力的。 ASP.NET 已经集成了 Json.NET、Polly、AutoMapper 和许多其他库,因此在已经存在很多选择的情况下重建如此复杂的安全产品(它将需要 80% 的相同基本代码)似乎是一个错误路线图上还有很多有趣的事情要处理。

@戳
你说得对,编写我的应用程序的基类是个好主意。

实际上,我认为这些不在框架职责范围内:

CRUD resources (repository responsibility)

Manipulating data (sieve responsibility)
    Paging
    Filtering
    Searching
    Sorting
    Shaping

但是有很多事情我认为AspNetCore 可以做得更好(通过拥有 AspNetCore.RestFramework 包):

  1. HATEOAS(自我发现的api)
  2. 媒体类型(设置自定义媒体类型)
  3. 版本控制(更新媒体类型版本)
  4. Mainpulated 数据元数据(分页到 X-Pagination 标头,过滤元数据......等)。
  5. 速率限制和节流。

我知道那里有很多库,我在这里找到了一些: https://github.com/thangchung/awesome-dotnet-core...但是,对于企业应用程序来说,第 3 方库并不是一个好的选择!

筛子也是一样,如果有一个用于分页、过滤等的官方包,开发人员不会倾向于编写错误或非维护的库,我在我上面提到的应用程序中使用了这个筛子: https:// github.com/Biarity/Sieve ,但是这个库可以在作者忙碌的任何一秒维护

我认为 AspNetCore 已经足够成熟,可以像在 django 中那样开始考虑开箱即用的解决方案,这样我们就可以拥有asp 性能的奢华和django

但是,第 3 方库对于企业应用程序来说并不是一个好的选择!

^ 这就是为什么我们不能有好东西😞

但是,第 3 方库对于企业应用程序来说并不是一个好的选择!

是的,这正是需要在这里改变的思维定势。 ASP.NET Core 和 .NET Core 是开源的,它们的生态系统_is_拥抱开源社区,它应该继续这样做。 不仅是作为 .NET Foundation 一部分的开源解决方案,还有任何真正的解决方案。

但是这个库可以在作者忙碌的任何一秒停止维护

以同样的方式,“官方”套餐可能会在公司转移兴趣的任何时候变得无法维护。 这在 Microsoft 之前发生过特定的事情,包括他们发布的多个开源包,但对于任何公司来说都是很自然的。

如果决定依赖另一个库,你有责任忍受它。 不管作者是谁。 开源的好处在于,即使作者最终没有回应,也完全有权自行更改。

强烈反对期待 Microsoft 官方解决方案来解决您可能提出的所有问题。 不仅因为从来没有一个万能的解决方案,这使得这非常困难,同时可能会失控,而且特别是因为这从框架中真正需要关注的部分中夺走了资源。 同时它伤害了开源的想法真的很糟糕

如果您正在构建企业应用程序并且仍然与NIH综合症(或“不是在 <大型公司> 发明的”)作斗争,那么您真的应该醒醒,因为现在是 2018 年,您现在可能应该拥抱开源。

你说得对,微软可以停止维护任何包,但至少他们有一个特定的 LTS: https :

例如,.NET Core 1.1 支持将于 2019 年 6 月 27 日结束……这样我就可以确定,如果我使用这个版本,我不会中途瘫痪。

我曾经用过一个3rd-party的分页标签助手,感觉不太好,作者基本上告诉我他不会为.NET Core 1.1修复它,我应该更新项目,它是一个大学系统,变成2.0(他有权这样做,因为他免费编写了那个包)。

这就是问题所在,在企业中,这行不通……您无法说服整个团队在应用程序启动并运行时就应该迁移到 2.0,因为分页标签助手没有工作!
所以你只需像我一样使用装饰器开始破解源代码: https :

是的,谁说我不是开源的忠实粉丝:confused:?

@0xRumple不是开源贡献和协作的想法吗?

如果那个 3rd-party 分页标签助手不存在,你就必须自己编写并维护它,“在企业中”。

这就是问题所在,在企业中,这行不通……您无法说服整个团队在应用程序启动并运行时就应该迁移到 2.0,因为分页标签助手没有工作!

与其试图“说服整个团队你应该迁移到 2.0”,不如贡献一个更新并提供帮助,而不是依靠其他人来完成工作或等待 Microsoft 提供相应的解决方案。 如果所有者不想接受您的贡献,请根据您的需要使用叉子。

我猜你的想法(完全没有冒犯的意思)是围绕“Microsoft 授权服务器”与身份服务器进行讨论的重要原因。 如果开发人员不想参与,开源将如何运作。 我们应该等待微软提供我们需要的所有代码吗?

我同意这里的许多人的观点,即微软应该小心,他们不会通过自己替换所有东西来扼杀生态系统中的优秀开源项目。

我实际上是@0xRumple提到的分页 taghelper 库的作者,他的问题实际上是一个 pagedlist 组件而不是 taghelper,它实际上确实有一个支持 1.x aspnet 核心的旧 nuget。 分页列表实际上是以前的开源分页库的一部分,它通知了我的库的设计,并且曾经在演示页面中使用过,但是分页器 taghelper 不依赖于分页列表的实现,还有其他分页列出他在仍然使用寻呼机 taghelper 时可以使用的实现。 事实上,我已经从那个库中完全删除了分页列表,因为它甚至不是 taghelper 的一部分,而且从来都不是。

使用来自 OSS 开发人员的 nuget 包与使用 Microsoft 没有什么不同,因为如果您坚持使用 aspnet core 1.1,那么除非您更新到新框架,否则您将无法从 aspnet core 2.x 获得修复和改进。

@joeaudette
我刚刚提到这个例子是为了说明我对内置解决方案和第三方解决方案的看法,我仍然感谢你在分页标签助手上的工作......大学使用你的分页包,他们很高兴 :heart:

@alhardy

我们应该等待微软提供我们需要的所有代码吗?

这是主要问题,我们认为当微软带来官方解决方案时,他们会与任何其他开源解决方案抗衡,或者他们会自己编写每一行代码:smile:

当然不是,如果微软采用正确的解决方案并创建缺失的解决方案,我们可以两全其美,官方解决方案基于社区的解决方案,以便开发人员可以专注于为这些做出贡献。

django 社区做对了,他们正式提供/采用了针对特定问题的初始简单解决方案,例如 RESTful 框架,并且社区在此基础上构建......在这里查看他们构建 django-rest 的初始阶段-框架: https :

他们开始了最初的项目,社区在此基础上改进/构建,这是他们的 repo: https://github.com/encode/django-rest-framework...大约 800 名贡献者!
并且社区被驱使构建在该包之上解决问题的包,例如django-rest-authdjango-rest-framework-jwt

至少他们提供了大多数开发人员需要的“官方解决方案”,例如django-admin-sitedjango-debug-toolbar 。 这也来自 Python 的“包电”哲学,一开始我觉得它很糟糕,因为它力求最小公分母的解决方案,后来我意识到它带来的微风。

*PS:Dapper(由 StackExchange 提供)和 EFCore(由 Microsoft 提供)都是 ORM,但它们旨在以不同的方法解决同一问题。 Dapper 最初创建于 2011 年,而 EFCore 2014 年... EFCore 是否严重影响了开源项目? 当然不是,但这是官方解决方案!
人们已经建立在这些惊人的东西之上,像这样: https :

EFCore 是否严重影响了开源项目?

呃,有人记得 NHibernate(在功能上最接近 EF)吗? 不,可能不是,因为它在 EF 发布后就像死了一样😕

@0xRumple

当然不是,如果微软采用正确的解决方案并创建缺失的解决方案,我们可以两全其美,官方解决方案和基于社区的解决方案,

在这种情况下,这既不是因为它正在重新创建现有的解决方案,而是故意减少功能。

实体框架和 Dapper 非常不同。 EF 一直被设计为一个功能齐全的 ORM,并且都比2007 年最初的

但是,我也不认为你错了,看来我们都在谈论彼此。 当您谈论与 REST 相关的库时,该线程主要是关于身份验证服务器产品的评论,这些库看起来小且集中,足以包含在 Web 框架中。 我同意标准化的search/paging/filter参数对于内置 Web API 代码会很有帮助。

本次讨论并未承认在某些组织中,开发人员必须考虑引入到他们的解决方案中的每个开源包的尴尬事实。 在某些情况下,这是一个自动扫描,将生成“风险”报告,非技术风险经理经常需要审查这些报告。 这些工具将标记任何未积极维护的内容以及任何看起来像 Copyleft 许可证的内容。

您还可以想象,在这些组织中,回馈开源被视为疯狂的言论。

是的,Identity Server 4 很棒。 但是对于非技术风险管理人员来说,这是我们没有保证的东西,是少数人支持的东西,更糟糕的是 - 每个人都可以看到源代码的东西。 这个人被误导了,但地面上的普通开发人员不会赢得这场战斗。

正如@markrendle恰当地说的那样,“身份服务器精简版”主要由 Microsoft 员工编写,这可能是是否允许使用 .NET Core 的区别,特别是如果组织中的企业架构师坚持一些 $$ $$$ 来自 HP 或 IBM 的企业垃圾用于身份验证。

@edandersen

但是对于非技术风险管理人员来说,这是我们没有保证的东西,是少数人支持的东西,更糟糕的是 - 每个人都可以看到源代码的东西。

我很确定如果你付钱给 IdentityServer 的人会提供一些支持——就像你付钱给微软一样。 OSS 不等于免费。

是什么让您认为 Microsoft 的 ASP.NET Core 团队不是“少数人”? 剧透……他们总共有 20-30 人。 只有一对夫妇会在这样的产品上工作。

我真的很好奇为什么“每个人都可以看到的源代码”是一件坏事? 是什么让你认为微软的这个产品不会开源? 这是新的默认设置。

@khellang “每个人都可以看到的源代码”要清楚这是一件好事! 但是您会惊讶于某些开发人员在工作中需要拥有的论点。 不幸的是,“微软写的”这一点有时是唯一可以接受的论点。 请注意,我是在为一家假设但典型的功能失调的公司充当恶魔的拥护者。

当然,同样的开发人员可以主张他们的雇主为 Identity Server 的支持付费,但采购过程可能会剥夺他们的生存意愿。

好吧,如果我们开始使用这些非技术经理的论点,事情就会开始变得疯狂。 恕我直言,非技术人员不应该规定应该使用或不使用什么。 如果他们想有一个说法,至少他们应该知道他们在说什么,并且说像 IdentityServer 这样众所周知的软件包质量不如 MS 软件包,对我来说,这完全是错误的。 我会离开这样的公司!

但这里的重点是,几乎每个人都同意花时间在已经存在的东西上,它是可靠的,而且很多人都在使用它,这有点奇怪。 我想知道这背后的真正原因是什么......我不认为它就像:哦,让我们建立自己的东西,只是因为我们可以。 客户是否真的提出了我们可能不知道的要求?

就我个人而言,我认为 OAuth-Server 领域的另一个竞争者不是问题,而是一件好事。

它可能有助于推动该领域的发展,或者只是为那些只需要一个快速而肮脏的解决方案的人提供快速而肮脏的解决方案。

如果您想要或需要更多来自 OAuth 服务器的内容,那么我们中的任何人都无法使用现有的解决方案。 或者,如果您想要一个一键式模板来执行基本的 OAuth _仅此而已_,那么这似乎是一个有价值的目标,至少对我而言。

我认为这个帖子已经变成了关于 OSS 是什么、MS 擅长做什么以及 MS 不擅长什么的针锋相对,而不是关注 .NET Core 2.2 路线图上的内容,这才是真正的这里很重要。

@赫朗
“NHibernate 已死”,谁说的? 我看这个项目还活着,甚至比Dapper还有更好的势头
https://github.com/nhibernate/nhibernate-core/graphs/contributors
https://github.com/StackExchange/Dapper/graphs/contributors

啊,我直到现在才提到 IdentityServer 来坚持我的观点,即在官方的 aspcore pacakges 中拥有 RESTful 框架……这是我对 IdentityServer 的看法,它非常可靠和伟大,但它是一个 2 人项目,看看指标:
https://github.com/IdentityServer/IdentityServer4/graphs/contributors

大约85%的工作是由2个人完成的,对于一个安全相关的项目来说是可以的,但是在企业中很多公司会考虑未来此类项目的可维护性。 最近一家公司告诉我,他们希望我在他们的项目中使用 React 而不是 Vus.Js,因为他们说“vue.js 几乎就是 Evan You”……我认为他们是对的。 这就是我想说的,自从讨论在官方包中包含 RESTful 包

数据操作/筛选(分页、整形、排序等)也是如此,因为几乎每个项目都包含这些要求,是的,正如@manigandham所说,它们是标准化和直接的。

@manigandham
正是这正是我认为正确的……正式调整和支持解决方案,无论是在财务上还是通过 github 做出贡献,或者至少在他们的文档或课程中提到它们(我已经看到 Hanselman 在他在 Microsoft Virtual 的一门课程中提到了 SwashBuckle学院真的很棒,看到更多对此类项目的改编会更好!)。

@kieronlanning
你说得对,我们离主题太远了……但正如我之前提到的,asp 核心刚刚变得非常成熟(高性能和可靠),我认为是时候开始了。 -盒解决方案

我认为打折一个项目因为它有两个主要贡献者是非常愚蠢的。 IS4 维护得很好,这两个家伙花了很多时间回答问题和帮助人们。 它也被广泛认为是市场上 OAuth2 服务器的最佳 FOSS 解决方案之一。

“NHibernate 已死”,谁说的? 我看这个项目还活着,甚至比Dapper还有更好的势头

@0xRumple我说“和死一样好”😉 您似乎对 OSS 项目的健康状况和使用情况有一些非常奇怪的指标。 将 2003 年以来项目的提交数量与 2011 年以来的项目数量进行比较是否公平? 它们也是_非常_不同的野兽(如线程前面所述); Dapper 已经“完整”(这并不意味着不需要维护、被放弃等)有一段时间了,而 NHibernate(及其功能集)一直落后。
我知道该项目仍在进行中,但我不记得最后一次,在我过去 7 年在 .NET 领域的咨询中,我在野外遇到了 NHibernate(它不在过程中)正在迁移到实体框架)。 过去几年一直关注这个领域的每个人都非常清楚 NHibernate 一直落后于实体框架并失去了市场份额。 单看 NuGet 下载量:Entity Framework 有 45.8M,而 NHibernate 有 3.4M。

无论如何,重点不在于实体框架与 NHibernate。 这只是_one_示例。 我们一遍又一遍地讨论这个问题; 最近,微软在 ASP.NET Core 中推出了自己的轻量级 IoC 容器实现,或者微软正在考虑推出自己的对象映射器。 每当微软进入 OSS 社区的空间时,它都会从房间里吸出很多(大部分?)空气。 通常足以让较小的、社区驱动的项目随着时间的推移而窒息。 我和社区中的大多数人都非常了解; 在微软自己的 (.NET) 世界中与微软竞争是不可能的。 我完全理解他们有需要满足的付费客户,所以我不希望这些反馈会改变他们的想法 :smile:

很棒的功能:)

在哪里可以获得有关健康检查功能的更多信息?

改进自签名证书管理

在开发调用相关 Web API 的 Web 应用程序时,通过本地网络与内部用户测试它们会很有用。 您可能已经通过了所有的单元、功能和集成测试,但没有什么比人类更能真正破坏事物的了。

本着解耦问题的精神,我的网络应用程序调用了多个网络 API。 首先,我使用https://localhost开发这些 Web API:. 一旦 Web API 准备就绪(足够了),我就将其发布到本地计算机上的 IIS。 每个站点都有一个我在内部 DNS 服务器上设置的合适的主机名。 此时我使用 Barry Dorrans' - @blowdart - gist https://gist.github.com/blowdart/1cb907b68ed56bcf8498c16faff4221c创建服务器证书。 提供我将证书导入所有正确的商店,一切都在我的机器上正常工作,没有警报。

当网络上的其他人访问 Web 应用程序(API 调用都在我的开发箱中)时,这种情况会发生变化。 用户收到可怕的警告。 我告诉他们忽略这些警告,并在可能且足够简单的情况下导入证书。 由于这些自签名证书具有相同的颁发者名称和通用名称,因此每个新的 Web 应用程序都会触发一个警告页面

我不禁想到要求组织中的用户浏览警告页面是一个坏主意。

作为一名非安全专家,我希望看到以下几点:

  • 能够为我创建的所有开发证书提供本地根证书,然后被告知将其导入 PC、Mac、Android、iPad 和 iPhone 设备的授权方式,以便不再出现这些令人担忧的页面

  • 一种为 API 生成证书的更简单方法,可与 IIS 和 Kestrel 一起使用,正确填充所有正确的证书存储

@CrispinH老实说,支持根 CA 将是一个关注启动根 CA 的问题。 如果您处于那个时候,那么是时候考虑自己启动根 CA 并对其进行管理了。 自签名支持,无论是全局工具还是我的脚本都只是为了开发。 一旦您开始让人们附加到它,您就超出了该功能的范围。 如果您在一个组织中并希望人们访问服务,那么该组织需要确定他们的证书策略,通过 Windows 或 OpenSSL 运行内部 CA,并通过 AD 策略或其他方式推出根。

@blowdart
我发现的所有文档都太笼统了——我想要的只是一个创建证书(理想情况下基于根 CA)的过程,仅用于使用服务器证书保护 API 和 Web 应用程序。 也许只需要特定案例的文档即可。

@CrispinH Window Server 附带了一个证书颁发机构,如果您想完全使用它,您可以设置它。

证书的一般不是一个轻松的话题,你不得不学会了不少做是正确的。

出于开发目的,自签名证书非常好且易于使用。 除此之外,包括设置和管理 CA 在内的一切都不再用于开发目的,并且绝对超出了 Web 应用程序框架的范围和过于复杂。

@CrispinH作为@poke说,这是很难得到它的权利。 一旦您拥有信任根 CA 的机器,那么发布的任何证书都将受到信任,并且开发人员在他们的开发设备上运行不受信任的代码,这毕竟是 nuget 包。 所以考虑一些窃取你的根 CA 的东西。 在现实生活中,根 CA 往往保持离线状态,他们签署第二个证书,该证书受限于它可以做什么,通常是服务器和客户端证书,然后通过信任颁发证书,许多开发 CA 受到限制,所以妥协意味着能够发布受信任的代码签名证书。 毫无意义地侮辱 CA 并不是开发人员应该运行的东西,最好留给那些了解后果的人,而后果可能是可怕的。 然后还有证书轮换、撤销、OCSP 等需要考虑。 我必须有一个用于我的证书认证中间件的测试 CA,并且它位于已关闭的 VM 中。 当我打开它以获得更多测试证书时,我变得非常紧张。

如果你真的,真的,想要深入这个根(双关语),那么https://infiniteloop.io/powershell-self-signed-certificate-via-self-signed-root-ca/可能会让你开始使用 powershell,但这不会为您提供 CRL 或 OCSP 或吊销支持。 https://gist.github.com/Soarez/9688998似乎涵盖了 OpenSSL。 如果您需要 CRL,则 Windows 中内置了 CA,此处记录了此设置https://leastprivilege.com/2008/08/14/how-to-build-a-developmenttestdemo-ca/

_请注意,我没有使用上面的任何链接(尽管我相信最后一个的作者),而且这绝不是任何类型的 MSFT 官方推荐。 ASP.NET 安全团队的官方建议是让了解基础架构和风险的人为您设置企业 CA。 与您的 IT 部门交谈_

@blowdart不,我真的_不想_想深入那个“根”。 很高兴现在知道为什么。

看起来我的人形测试必须在测试主机上使用 Let's Encrypt 证书在公共互联网上完成,但要设置身份验证墙以防止窥探。

根据您的需求和预算,一些公司(如 DigiCert)提供托管 PKI 服务。 那可以使用私人根或他们的公共根。 我不知道费用。

如果它只是 HTTPS,请记住,您将获得每个 azurewebsites.net 子域的证书。

权衡新的 OpenID 实现,而不是另一个实现来学习、接受和参与 IdentityServer4 的社区工作,并有助于创建一个自以为是的 IdentityServer“Lite”版本,该版本可以从 nuget 中包含,并以最小的努力进行设置。

你们都反应过度了。
ASP.NET 团队已经像你们所有人一样思考。 @DamianEdwards在最近的社区

这是最相关的部分(但我鼓励您听完所有内容):

“我们现在实际上正在与 IdentityServer 的人讨论这个问题。”
https://youtu.be/Tzh2EXwgEk8?t=25m15s

看到围绕“MSFT 授权服务器”项目的讨论是多么热情真的很有趣:微笑:

顺便说一句,Vittorio Bertocci 正好在 2 年前联系我讨论这个项目,因为他们正在考虑使用 OpenIddict(我开发和维护的 OIDC 服务器)作为这个项目的基础。
去年,有人告诉我,他们更喜欢使用自己的实施,而不是利用第三方 OSS,因为从业务角度来看

我很高兴看到他们改变了主意,并最终考虑使用现有的 OSS 解决方案,例如 IdentityServer4,而不是从头开始创建另一个东西:这是发送给 .NET 社区的一个非常好的信号:拍手:

这有点脱离线程,但是@CrispinH ,看起来您正在查看https://stackoverflow.com/questions/51123289/how-to-generate-a-response-to-a-csr- in-net-core-ie-to-write-a-csr-signing-se。 .NET Core 2.0 还包括其他用于创建和使用证书的工具。 请参阅有关运行 CA 的评论。 库工具几乎就在那里,根据您的组织,您可以在某些服务器中以某种受控方式使用证书,而无需设置大量内部结构。 在该令牌上,开箱即用的读取(DER 编码)证书签名请求(CSR)将是一个很好的补充——以及一个 JSON-LD 库。 以及更多的加密货币。 :)

我很想看到一些中间件,比如对 LetsEncrypt 的支持——在 Windows、Linux 和 Azure 中的 Docker 中使用应用服务。

@kieronlanning我同意,除了前面提到的关于 CSR 签名的 DER 编码(尽管添加没有边缘情况的支持看起来并不那么困难)。 .NET 有一些库(也在 Let's Encrypt 页面上列出),但也有点麻烦。 例如,就 Let's Encryptc 而言,维护最积极的 .NET 看起来像是Certes ,但它依赖于BouncyCastle 。 如果有人帮助它成为 .NET Standard 2.0 就好了。 对我来说,一个原因是 BouncyCastle 不能很好地与Orleans TaskScheduler 。 :)

关于加密提到,虽然严格来说不是 ASP.NET Core 问题,MS 似乎正在大力推动区块链,但 .NET 缺乏加密能力。 _从表面上看_其中很多也与 ASP.NET 核心有关(例如,各种区块链浏览器实现,例如 https://etherscan.io/),如果能有更多支持,那就太好了像 Inferno 这样的库以及更多的功能融入到平台中。 一个悬而未决的问题是在https://github.com/sdrapkin/SecurityDriven.Inferno/issues/10#issuecomment -395778931(如果有人愿意帮忙,请在此处借一些眼睛)。

来自@kieronlanning 的这将是我的第一项功能请求:

“我很想看到一些中间件,比如对 LetsEncrypt 的支持。”

这是未解决的问题: https :

是否认为消息包可在 asp.net 核心上用于所有框架,而不仅仅是在 SignalR 上? 由于 Http2 成帧是二进制的,您是否考虑为此使用消息包?

授权服务器在 preview3 上发布?

它已经存在。 https://IdentityServer.io

@最低权限
我喜欢并使用 IdentityServer
但是我很想知道微软的实现并理解为什么(微软)没有在你的核心中加入身份服务器

@danroth27 - 你能分享最新的吗?

微软正在使用 IdentityServer。

那么这是如何工作的呢? 微软直接使用IDS4代码? 微软削减 IDS4 功能? 这里的模型是什么? 我们的期望应该是什么? 它们之间是否有可能的迁移路径?

Microsoft 将使用我们的标准 nuget 包并使用我们的配置 API 为您提供一些默认设置,以便与模板和 ASP.NET Identity 配合使用。 就这样。

您今天已经可以实现完全相同的目标。

可能是我,但我很惊讶地看到 Microsoft 授权服务器的空白被 IdentityServer4 填补。 根据我的理解,IdentityServer 的主要关注点是身份验证,而不是授权。

对我来说 IdentityServer 作为身份验证服务器很好,但不能作为授权服务器。 我认为这就是创建 PolicyServer 的原因。

@leastprivilege IdentityServer 是否会使用

@Ruard所以它令人困惑(多米尼克可能会畏缩或选择我的解释)。

OAuth 是身份验证,但第一步是授权,然后根据范围等发出授权。因此,在我们的包装中,Identity Server 将执行登录、验证和验证所需的范围(在初始情况下总是成功,因为我们使用的是默认范围),然后将令牌传递回调用者,然后将令牌发送到将验证它的 API,然后(可选)您可以进一步使用 API 中的授权规则。 OIDC 提供的 OIDC 进一步混淆了它,因为它是一种获取用户身份信息的方式,包括允许应用程序拥有它的授权......

所以,基本上,Identity Server 会给我们一个身份,授权应用程序可以拥有它,然后你可以使用 ASP.NET 的授权部分来进一步控制访问。

@MichelZ会有一个成长的故事。 我们将针对简单的场景进行配置,一旦您走出这些场景,您就可以探索 IdentityServer 配置模型的全部功能。

@blowdart我们已经在使用 IdentityServer(并且对这些功能印象深刻!),但是从 Microsoft 的“长期支持”政策中获益对我们来说也是一大优势。 因此,您可以在这里提供的任何协同效应都非常受欢迎。
我们同样喜欢 ASP.NET Core 和 IdentityServer (4) 这两个产品。 恕我直言,这绝对是朝着正确方向迈出的一步。
但是,我们也认识到所有这些协议都不是完全“直截了当”的。 它们不是你理解的火箭科学,但仍然,它们也不是直截了当的。

我希望有人能发明一种非常简单的协议,留下所有传统的实现和着眼于未来。

如果您已经在使用它,那么您的使用不会真正改变,您可以使用它:)

我们的目标是 File New > Web API with Individual Authentication,然后添加其他 API,一切都基于约定。 这不适用于现有的应用程序,因为约定是新的。 我不打算用我们的配置替换您的配置:)

我希望有人发明一个非常简单的协议,抛开所有遗留的实现,专注于未来。

这就是问题所在——应用程序变得越来越复杂而不是越来越复杂。 为了保护它们,安全性也很复杂。 当我听到人们说 IdentityServer 很复杂时,我总是反驳——其实不然。 复杂的是您的应用程序的安全要求。 通常人们没有认识到这一点的视角。

是的,它正在运行——而且运行良好——但是,当微软正式“认可”并最终“支持”一项技术时,它(可能)给你的额外保证是纯金......!
你已经被提升到一个全新的高度!

@brockallen是的,应用程序可能会使事情复杂化很多。 然而,OIDC 协议不可否认地继承了 OAuth 2.0 的一些东西,它最好摆脱。 你的一些团队成员(我认为是 @leastprivilege)说,如果 OIDC 是从头开始开发的,它看起来可能与我们现在拥有的完全不同。

我并不是说我们现在拥有的东西是“坏的”,我真的很感激我们拥有的东西,它对我们的目的真的很实用,我希望参与创建它的每个人都为他们所做的工作感到自豪!

@团队;
对于预览版 3,您能否提供一些有关“授权服务器”的详细文档,以及它将如何与 Web API 和客户端 JS(如 Vue)一起使用?
我们需要做出决定,授权服务器上的这个预览是一个关键预览,任何详细文档都会为我们提供有关我们决定的信息。

谢谢!

刚刚注意到美国开放数据 API 也在 JSON-LD 中:https://project-open-data.cio.gov/v1.1/schema/。 这似乎是一个快速增长的趋势,因此与 ASP.NET 一起使用的资源丰富的 JSON-LD .NET 库会很好。 :)

@veikkoeeva NuGet API(至少是其中的一部分)也是如此。 他们正在使用json-ld.net ,不需要另一个库。

@khellang还有其他库,这个特定的库可以使用维护者(https://github.com/linked-data-dotnet/json-ld.net/issues/26)。 我意识到它是开源的,理论上我可以介入贡献,但至少目前我太分散了,无法帮助解决这个问题。 换句话说,也许,我想引起人们的注意,许多数据集似乎正在转向语义格式,并且不清楚如何使用 .NET 有效地使用它。

恕我直言,将 IdentityServer4 添加到 ASP.Net Core 的核心是一个坏主意。
请不要将 .NetCore 作为一个整体框架。
.NetCore 和 IdentityServer4 都有,人们根据自己的身份验证和授权需求制定架构。

@mikeandersun该计划只是有一个简单的默认配置,您可以将其添加到您的项目中以使其开箱即用。

你仍然不能使用它,它不会影响你。 您仍然可以使用 IdSrv 并自行完全配置。 您仍然可以选择要包含在您的项目中的组件。 所有这些都不会使 ASP.NET Core 变得单一。

ASP.NET Core != .NET Core 顺便说一句。

2.2 会是 LTS 版本吗? (问是不是已经公布了,不是问你再公布。)

@yzorg不,尚未宣布。 该决定通常是在发布后基于质量/稳定性做出的。

@blowdart ,此模板是否会为身份服务器提供 Web 应用程序 MVC 客户端而不是 API?

@Ponant不。它仅针对 API。 我们将在 3.x 时间线中重新评估。

有趣... 这个问题是在昨天的一次会议上提出的。 如果我们在不使用 Web API 的情况下构建一个完整的“MVC”项目,我们可以使用 2.2 中集成的新 ASP.Net 2.2 IS4 模板吗?
看起来大老板(巴里)刚刚回答了这个问题。

@blowdart allias 大老板:为什么不能一次性完成? 乍一看,使用 mvc 客户端或 web api 与 asp.net 核心身份 IS4 服务器通信似乎微不足道。

@Ponant因为我们没有无限的资源。 您希望我们放弃哪些功能,以便让每个人都改变 MVC 流程的主要部分,而该部分不会提供任何新功能,而只是改变现有功能的工作方式? 单独的经过身份验证的 API 一直是完整框架和 ASP.NET Core 之间的差距。 工作的重点是填补这一空白。 Identity Server 已经有了以 Identity Server 为“核心”的 MVC 工作模板。

@CrispinH @blowdart我同意你的整个激烈,用户管理,角色,租赁和已经刻不容缓用户组。 看看这个 - 有 7 个 Uservoice 票都在抱怨这数百个开发人员和公司。 可悲的是,许多其他技术,如 Java blueRay 门户 JSR 182 或 173,在这里做得太棒了!

--> 这么多的用户/组/租户管理请求

image


--> 在这里,人们再次抱怨......它继续存在,即使在 twitter 和 facebook 上......这就是原因 - 为什么其他平台如 WP 和 PHP 更容易!

image

虽然@manigandham认为身份服务器非常适合,但他们对 GUI 管理工具收取了很多费用并不便宜,这也与低 TCO 开发人员背道而驰。 有多少人能真正负担得起。 这是一个巨大的障碍和退一步,需要一个基本的香草功能和 GUI 来管理用户/角色/角色-用户组/租户,然后可以由开发人员增强

@papyr为什么不

@papyr @poke不需要新的开源项目,已有优秀的项目。

如果你想要一些来自 MS 的开源软件来与 WordPress 竞争,那么看看 Orchard:
https://github.com/OrchardCMS/OrchardCore

如果您想要更多的库方法而不是框架,请查看 cloudscribe,它具有用于多租户和用户、角色和声明管理的 nuget,预构建了可选的 identityserver4 集成和可选的 cms(cloudscribe.Simple/content)作为额外的金币。
https://www.cloudscribe.com/docs/introduction
https://github.com/cloudscribe/cloudscribe
https://github.com/cloudscribe/cloudscribe.SimpleContent

如果你想要一些来自 MS 的开源软件来与 WordPress 竞争,那么看看 Orchard:
https://github.com/OrchardCMS/OrchardCore

我赞同这个建议。

Orchard Core 的设计非常模块化。 例如,可以仅提取其多租户模块并在您自己的项目中使用它。 它也已经有管理用户和角色的模块,我相信他们会感谢你的贡献,让它变得更好。

您可以在他们的频道上观看大量有关其各种功能的演示。

这个 UI 的东西可能很棘手,尽管有助于快速获得基本的东西。 似乎最近我遇到的案例构建 UI 并不是最大的任务,但弄清楚如何满足“流程需求”,例如预先批准一些电子邮件(执行特定于应用程序的事情),调用调用 API 的 API ,其中一些可能意味着加入数据库或调用其他地方等,然后将它们添加到令牌和 UI 逻辑中。

因此,拥有诸如https://mcguirev10.com/2018/01/28/login-identity-management-best-practices.htmlhttps://mcguirev10.com/page2/ 之类的优秀教程比 UI 更重要(尤其是在不能或不想使用 EF 的情况下)。 然后可能搜索用户选择的技术(Aurelia/Angular/Razor/React/Vue 等)以及它们如何实现一些数据处理。

关于命名项目名称,除了@ scottbrady91,我发现它非常育检查@LindaLawton, https://github.com/abergs/fido2-net-lib (@abergs,@aseigler),@TomCJones,@ mackie1001 (Gitter) 等提供额外的解释和代码,以便在超出基本需求的情况下进行查看。 我忘了添加一些名称和项目。 :)

为什么 .net core 不能有正常的 razor 网页? 当我做复杂的报告时,我喜欢在一个单独的 razor (c#) 页面上做所有的事情。 或者至少在没有模型或控制器的情况下有时只使用视图的能力。

换句话说,在视图中连接到 sql 并接收 GET 和 POST 请求的基本能力,当然,我目前使用一个名为 Striptag.cs​​ 的类。

为什么 .net core 不能有正常的 razor 网页?

您可以为此https://docs.microsoft.com/en-us/aspnet/core/razor-pages/?view=aspnetcore-2.1&tabs=visual-studio使用 Razor 页面

有一个支持页面模型类是可选的; 你可以只有一个页面

benaadams 感谢您的回答,我将如何直接在剃刀页面中使用 GET 和 POST 请求,并与 sql server 建立基本连接。 用于常规查询的连接,而不是 ado 实体、linq 或 ORM。 我总是喜欢普通查询。

喜欢:

var msql = "SELECT * FROM customerss WHERE lastname LIKE <strong i="7">@0</strong> ORDER BY lastname OFFSET " + thisoffset + " ROWS FETCH NEXT 5 ROWS ONLY";

我知道连接字符串现在在一个 json 文件中,但不知道如何在视图中使用它。 有些事情没有深入记录。

嗯,它有一个学习曲线。 如果要在加载视图之前获取数据,请在相应的操作中进行。 因此,对于HomeController.ViewReports操作和Views/Home/ViewReports.cshtml页面,您编写:

public class HomeController
{
  public ActionResult ViewReports()
  {
    // fetch data from the SQL using...something...
    return View(data);
  }
}

如果你想在页面加载后获取数据,你通常使用 AJAX 请求到一些纯 GET/POST 端点,返回 JSON 格式的数据。

仍然可以在没有任何控制器或操作的页面上执行此操作; 就像是

<strong i="6">@page</strong>
<strong i="7">@using</strong> System.Data.SqlClient
<strong i="8">@using</strong> Microsoft.AspNetCore.Http
<strong i="9">@using</strong> Microsoft.Extensions.Configuration
<strong i="10">@inject</strong> IConfiguration Configuration

@{
    var lastname = Request.Query["lastname"];
    if (!string.IsNullOrEmpty(lastname))
    {
        var offset = 0;
        var count = 5;
        if (Request.Method == HttpMethods.Post)
        {
            int.TryParse(Request.Form["offset"], out offset);
            int.TryParse(Request.Form["count"], out count);
            count = Math.Min(count, 50);
        }

        var connectionString = Configuration.GetConnectionString("MyConnectionString");
        using (var conn = new SqlConnection(connectionString))
        {
            using (var cmd = new SqlCommand(@"
            SELECT * FROM customers
            WHERE lastname LIKE <strong i="11">@lastname</strong>
            ORDER BY lastname
                OFFSET (@offset) ROWS
                FETCH NEXT (@count) ROWS ONLY"))
            {
                cmd.Parameters.AddWithValue("@lastname", lastname);
                cmd.Parameters.AddWithValue("@offset", offset);
                cmd.Parameters.AddWithValue("@count", count);

                await conn.OpenAsync();
                using (var reader = await cmd.ExecuteReaderAsync())
                {
                    while (await reader.ReadAsync())
                    {
                        <div>@reader["lastname"]</div>
                    }
                }
            }
        }
    }
    else
    {
        <div>Nothing chosen</div>
    }
}

我使用过 mvc asp.net 和 webforms 以及旧的 razor 页面,所以我对此并不陌生。 我已经花了 3 个小时,但仍然无法让一个简单的测试剃须刀页面工作,我有:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
</head>
<body>
    <form id="petform" method="post" action="pets/razdb3">
        <input type="text" name="psearch" id="psearch" />
        <input type="submit" />
    </form>

</body>
</html>

只是一个 html 页面并加载。

模型

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;

namespace petnewtry.Pages.pets
{
    public class razdb3Model : PageModel
    {
        public string myvar { get; set; }

        public void OnGet()
        {

        }

        public void OnPost()
        {
            myvar = Request.Form["psearch"];
        }
    }
}

看法:

<strong i="13">@page</strong>
<strong i="14">@model</strong> petnewtry.Pages.pets.razdb3Model
@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>razdb3</title>
</head>
<body>
    <div>@Model.myvar</div>
    <div>hello</div>
</body>
</html>

3个小时,我得到的只是一个空白页。 我尝试了 return 语句等

如果我只输入http://localhost :51307/pets/razdb3 我会得到第二个分区“你好”,但是
@Model.myvar 我一无所获。

我是 .net 核心的新手,从没想过简单地显示一个剃刀页面会或可能如此困难。

在 VS 社区 2017

@Model.myvar 我一无所获。

您使用表单值psearch在发布请求 ( OnPost ) 上设置myvar值; 所以你需要用那个值发出一个 POST 请求来设置它?

在 GET 请求 ( OnGet ) 中,您只需从浏览器导航到 url; 而不是表单回发没有被设置为任何东西。

尝试将其设置为默认值,以便在您未设置它以确认模型正在流过时显示:

public string myvar { get; set; } = "Not Set";

变成

public string myvar { get; set; } = "Not Set";

而且还是空白页。 @Model.myvar 正确吗?

甚至改为

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;

namespace petnewtry.Pages.pets
{
    public class razdb3Model : PageModel
    {
        [BindProperty]
        public string psearch { get; set; }

        public void OnGet()
        {

        }

        public void OnPost(string psearch)
        {
            psearch = Request.Form["psearch"];
        }
    }
}
<strong i="12">@page</strong>
<strong i="13">@model</strong> petnewtry.Pages.pets.razdb3Model
@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>razdb3</title>
</head>
<body>
    <div>@Model.psearch</div >
        <div>hello</div>
</body>
</html>

它构建得很好,没有错误,但无论我尝试什么,都会出现空白页。

礼貌的评论/想法:感觉这个关于“普通剃刀页面”的讨论开始有点偏离主题了。

😊😊

抱歉,我意识到我应该使用论坛。 谢谢@benaadams,你的代码让我走上了正确的轨道,我发现了这个:

https://www.c-sharpcorner.com/article/razor-page-web-application-with-asp-net-core-using-ado-net/

无论如何,这就是我通常做的事情,使用“新”关键字,例如

EmployeeDataAccessLayer objemployee = new EmployeeDataAccessLayer();

令人欣慰的是,您仍然可以在 .net 核心中使用自定义类。

您必须承认,.net core 的学习曲线比一些以前的 asp.net 框架更陡峭。 非常感谢。

发行说明谈到了“授权服务器”功能,预计将在未来几个月内作为附加组件使用。 是否有关于此功能的更多信息? 我正在决定我们是否应该等待它。 或者构建我们自己的解决方案。

发行说明谈到了“授权服务器”功能,预计将在未来几个月内作为附加组件使用。 是否有关于此功能的更多信息? 我正在决定我们是否应该等待它。 或者构建我们自己的解决方案。

我认为目前的计划是以“预先打包”的方式使用https://github.com/IdentityServer/IdentityServer4

按照 IS4 团队和 MS 安全团队的说明,似乎 MS 只是试图对 IS4 进行快速而肮脏的包装,并称其为今天。 但看起来更聪明的人决定保留并以正确的方式去做,因为如果做得不正确,安全会产生连锁反应。

我希望 IS4 和 ASP 之间的完全集成能够同时支持 Web API 和 MVC。

在这些日子里,工业强度认证/授权是最低要求。 开源 (OSS) 对大多数事情都很好,但在某些 OSS 安全产品中存在严重的疑虑,这在任何企业网站中都是不可接受的。 85% 的项目使用过时的库,这些库存在不可接受的安全风险。 例如,45% 的 Web 服务器使用 Apache (https://www.cvedetails.com/vendor/45/Apache.html),它比 IIS (https://www.cvedetails.com/product/3436/ Microsoft-IIS.html?vendor_id=26)。 Identity Server 之类的产品可能很好,但开发人员的调整可能会使它们完全不安全。 我们需要一个内置于 Net Core 的解决方案,它始终是安全的......

在这些日子里,工业强度认证/授权是最低要求。 开源 (OSS) 对大多数事情都很好,但在某些 OSS 安全产品中存在严重的疑虑,这在任何企业网站中都是不可接受的。 85% 的项目使用过时的库,这些库存在不可接受的安全风险。 例如,45% 的 Web 服务器使用 Apache (https://www.cvedetails.com/vendor/45/Apache.html),它比 IIS (https://www.cvedetails.com/product/3436/ Microsoft-IIS.html?vendor_id=26)。 Identity Server 之类的产品可能很好,但开发人员的调整可能会使它们完全不安全。 我们需要一个内置于 Net Core 的解决方案,它始终是安全的......

你的观点是完全正确的。 但在某些视频中,MS 工作人员表示,他们不会重新发明 [安全] 轮子并使用第三方 [IS4] 系统。 所以我希望这对我们所有人来说都是一个双赢的局面。

在这些日子里,工业强度认证/授权是最低要求。 开源 (OSS) 对大多数事情都很好,但在某些 OSS 安全产品中存在严重的疑虑,这在任何企业网站中都是不可接受的。 85% 的项目使用过时的库,这些库存在不可接受的安全风险。 例如,45% 的 Web 服务器使用 Apache (https://www.cvedetails.com/vendor/45/Apache.html),它比 IIS (https://www.cvedetails.com/product/3436/ Microsoft-IIS.html?vendor_id=26)。 Identity Server 之类的产品可能很好,但开发人员的调整可能会使它们完全不安全。 我们需要一个内置于 Net Core 的解决方案,它始终是安全的......

没有什么是“永远安全的”,尤其不是来自微软的东西;)
这些东西的使用者总是能够制造并保证它的安全。

IdentityServer 将包含在 2.2 版发布的新模板中。 最初的重点将是 API 访问控制 - 但有计划在未来扩展。

ASP.NET Core 将附带一个简化的配置 API,该 API 仅涵盖模板方案 - 但非常容易上手。 您可以随时过渡到 IS 本地配置系统,该系统为您提供高级方案。

IdentityServer 将包含在 2.2 版发布的新模板中。 最初的重点将是 API 访问控制 - 但有计划在未来扩展。

ASP.NET Core 将附带一个简化的配置 API,该 API 仅涵盖模板方案 - 但非常容易上手。 您可以随时过渡到 IS 本地配置系统,该系统为您提供高级方案。

感谢多米尼克提供的信息;
我认为这个“垫脚石”将帮助许多人开始,然后过渡到完整的 IS。 好动。

IdentityServer 将包含在 2.2 版发布的新模板中。 最初的重点将是 API 访问控制 - 但有计划在未来扩展。

ASP.NET Core 将附带一个简化的配置 API,该 API 仅涵盖模板方案 - 但非常容易上手。 您可以随时过渡到 IS 本地配置系统,该系统为您提供高级方案。

很高兴知道! 谢谢你。

我猜这个 API 访问控制将基于 OAuth 范围?
不直接支持更易变的用户权限,如 policyserver.io 中所述?

IdentityServer 将包含在 2.2 版发布的新模板中。 最初的重点将是 API 访问控制 - 但有计划在未来扩展。
ASP.NET Core 将附带一个简化的配置 API,该 API 仅涵盖模板方案 - 但非常容易上手。 您可以随时过渡到 IS 本地配置系统,该系统为您提供高级方案。

很高兴知道! 谢谢你。

我猜这个 API 访问控制将基于 OAuth 范围?
不直接支持更易变的用户权限,如 policyserver.io 中所述?

PolicyServer 是商业解决方案

我猜这个 API 访问控制将基于 OAuth 范围?
不直接支持更易变的用户权限,如 policyserver.io 中所述?

“仅”IdentityServer。 ASP.NET Core 有一个用于用户授权的内置 API - 如果您对 PolicyServer(产品)感兴趣,请告诉我。

关闭此问题,因为 ASP.NET Core 2.2 已经发布。

这不应该更新到 ASP 3.0

关于何时发布授权服务器增强功能的任何更新?

此页面是否有帮助?
0 / 5 - 0 等级