使用api身份验证+api服务构建.Net核心web应用程序

使用api身份验证+api服务构建.Net核心web应用程序,api,authentication,.net-core,state,Api,Authentication,.net Core,State,我目前正在考虑拆分一个.Net核心项目,我不确定应该采用哪些技术 假设我想创建一个网站,通过身份验证的用户可以在该网站上查看op图书标题: 我希望项目的结构如下: .Net核心web应用程序使用MVC所有UI 用于身份验证用户的.Net核心Wep api根据此处的数据库对用户进行身份验证 书名的.Net核心wep api在用户验证后返回书名 应用程序流程如下所示: 用户进入UI网页,并在登录屏幕上看到。用户输入用户名/密码,然后UI将向认证API发送登录请求。身份验证API应该返回某种类型的数据

我目前正在考虑拆分一个.Net核心项目,我不确定应该采用哪些技术

假设我想创建一个网站,通过身份验证的用户可以在该网站上查看op图书标题:

我希望项目的结构如下: .Net核心web应用程序使用MVC所有UI 用于身份验证用户的.Net核心Wep api根据此处的数据库对用户进行身份验证 书名的.Net核心wep api在用户验证后返回书名

应用程序流程如下所示:

用户进入UI网页,并在登录屏幕上看到。用户输入用户名/密码,然后UI将向认证API发送登录请求。身份验证API应该返回某种类型的数据,UI可以将这些数据存储在用户会话中,以验证用户是否在下一段时间内得到验证

当用户想要获取图书标题时,WEB UI应该将现有的身份验证数据发送到图书标题API。然后,图书标题api应验证用户是否仍然经过身份验证,如果是,则返回图书标题

我的问题是,关于这种设置的最佳实践是什么。我读过很多关于JWT代币/JWE、Cookies等的不同内容,我在这方面遇到了一些困难

我的身份验证API是否可以使用Identity framework,这些信息是否可以传递给其他API,或者我是否应该使用cookie身份验证,以及如何做到这一点

在未来的项目中,我希望能够创建一个应用程序,该应用程序还应该能够访问身份验证和书名API,而不必担心.Core UI项目

有没有人可以在这里给我指出正确的方向,或者有一些好的最近的文章/参考资料,我可以看看


向您致意

我理解您对设计解决方案的想法。你上面提到的事情看起来很合适,没有任何问题。但在选择正确的身份验证框架时,我想推荐几件事

如果您正在考虑将应用程序与一些IDP(如google或okta等)集成,那么您需要定义将要使用的协议。其中最受欢迎的是。 为您的应用程序寻找一些标准流。如果您使用的是客户机-服务器体系结构,那么您可以选择隐式流(由于安全问题而不推荐),也可以选择授权代码流

Net对在应用程序中使用OIDC有很好的支持

使用OIDC时,您有资格使用会话存储,访问\u toke,它是Shot TTL令牌,可在应用程序之间用于相互通信。了解更多信息

IDP将负责完成具有正确流程和集成应用程序的完整身份验证过程,您只需要正确的配置、库/框架支持即可。 使用OIDC还可以让您不陷入任何问题。 除此之外,您只需要处理授权逻辑,这是非常常见的和特定于应用程序的 你可以在云端免费试用的IDP之一是

如果您使用自己的身份验证框架, 您可以实现自己的identity server框架 检查这篇文章。您可以使用应用程序托管identity server或公开相同的API。
Git hug链接

您可以在下面的Git存储库中找到一个现成的解决方案,其中包含使用此解决方案的示例项目:


您可以找到一个身份验证服务器,它验证用户名/密码并返回令牌。该令牌用于访问MVC应用程序和安全API。

您的应用程序正在登录以执行身份验证,还是正在考虑与某个身份服务器集成?现在一个天的应用程序重新定向或使用第三方IDP或SSO技术,如openAM、google SSO、facebook等?@Sohan我的应用程序将提供身份验证,目前没有使用第三方的计划。好的,在我看来,你可以在应用程序中使用Identiy server。在下面检查我的答案