目前,我有两个相同API的客户端,一个Xamarin表单应用程序和一个ASP.NET Core项目。我们决定使用相同的API,而不是在MVC项目中使用实体,而必须重写API中已经编写的大部分内容(在过程中隔离数据库)。
然而,我在试图适应这种情况时遇到了困难。基本上,我们需要在这个MVC客户机中请求登录信息,然后使用单独的API访问服务器并验证这些信息。
关于这一点,似乎有几种不同的方法,尽管我还无法决定一个/使一个工作,因为没有太多关于这个特定场景的文档。
理想情况下,我们希望能够在这个客户端MVC项目中使用来自身份的授权和其他有用的标记,但是还没有找到在这个过程中引入我们自己的API的方法。有什么想法吗?
发布于 2019-03-25 19:41:47
身份,其核心,是一个用户管理框架。身份验证/授权的功能仅仅是切向相关的。当您开始讨论需要授权许多不同的应用程序,特别是不同类型的应用程序,例如移动应用程序和网站时,您需要开始查看集中式身份提供者。如果你想玩自己的游戏,IdentityServer是城里唯一的游戏。对于托管解决方案,可以考虑类似于Auth0或Azure之类的内容。
无论您选择什么,您都需要在不同的情况下使用不同的流。移动应用程序通常会使用OAuth流进行以用户为中心的操作,而通用的非用户特定请求则可能使用客户端凭据。对于网站,您将使用cookie身份验证和OIDC流。如果您需要通过AJAX之类的方式支持客户端身份验证请求,您的API将利用客户端凭据或者可能是混合的auth流。
总之,在这里做研究是无可替代的。你需要深入研究,找出你需要支持的东西,以及你要如何支持它。但是,不管单个流程如何,您都需要一个集中式的身份提供者来完成这一切。
也就是说,ASP.NET核心中的身份验证和授权中间件并不绑定到任何特定的提供者。根据您的最终目的,您可能会继续使用ASP.NET标识,也可能不会继续使用它(IdentityServer可以与之集成,但是类似于Auth0的东西会有它自己的用户管理)。但是,这与您继续使用Authorize属性的能力没有任何关系。
https://stackoverflow.com/questions/55345078
复制相似问题