Asp.net 使用Web API服务作为中心身份验证点

Asp.net 使用Web API服务作为中心身份验证点,asp.net,asp.net-web-api,asp.net-identity,thinktecture-ident-server,Asp.net,Asp.net Web Api,Asp.net Identity,Thinktecture Ident Server,我是身份管理领域的新手,请原谅我。:) 我想做的是,让多个客户端(MVC)应用程序与单个Web API应用程序通信,以对其用户进行身份验证。在那个Web API应用程序中,我想使用ASP.NET标识与用户进行数据库对话 这样,我就可以将SSO用于客户端应用程序(我想) 这有意义吗?有人能帮我实现这个(当然也欢迎链接)吗? 我不知道你能不能帮我做我想要的 还有一个附带问题:当我能够以我想要的方式实现这一点时,我如何处理同一原产地政策?许多关于活动配置文件的文章,例如。但那篇文章假设你想使用广告 我

我是身份管理领域的新手,请原谅我。:)

我想做的是,让多个客户端(MVC)应用程序与单个Web API应用程序通信,以对其用户进行身份验证。在那个Web API应用程序中,我想使用ASP.NET标识与用户进行数据库对话

这样,我就可以将SSO用于客户端应用程序(我想)

这有意义吗?有人能帮我实现这个(当然也欢迎链接)吗? 我不知道你能不能帮我做我想要的


还有一个附带问题:当我能够以我想要的方式实现这一点时,我如何处理同一原产地政策?

许多关于活动配置文件的文章,例如。但那篇文章假设你想使用广告

我猜您想使用ASP.NET标识进行设置


IdentityServer OOTB支持SQL数据库,并内置了基本的用户配置。它允许用户根据DB进行身份验证,并支持WIF。

此场景也接近您的需要,请查看答案:

我还建议您阅读本文:
谢谢你的帮助。:)

在过去的几个月里,我自己做了一些研究,学到了很多关于身份管理的东西。这也要感谢IdentityServer(以及他们的其他项目)的人员

我最后做了以下几点(非常简短):

  • 用作所有客户端应用程序的提供程序。使用cookie和OIDC中间件
  • 我使用将用户存储在SQLServer数据库中。(顺便说一下,IdentityServer配置也存储在数据库中。)
  • 我设置了一个Web API服务,该服务使用ASP.NET标识用户管理器进行用户配置(更改密码、创建新用户等)。它对以IdentityServer作为提供者的应用程序使用承载身份验证
  • 作为旁注,它用作内部管理工具来管理所有用户

如果任何人正在寻求帮助建立他/她的身份管理系统(并且认为我可以提供帮助):请询问。;)

再次感谢。:)对不起,我不清楚。我对这个世界还很陌生,但我已经对它做了几天的研究,我注意到它是多么复杂(我想应该是这样的)。:)我想要的是,使用多个客户端(MVC)应用程序(具有它们自己的登录、注册、用户管理页面),这些应用程序为了进行身份验证(和授权)而与一个包含所有逻辑的(WebAPI)服务进行通信。然后,服务应该与数据存储对话,无论它是Active Directory还是SQL DB。SSO很好,但不是一项要求。我不确定您是否完全理解我想做什么,我是否理解您的意思:p我不想使用两个存储库?MVC应用程序不应与用户商店直接联系。然而,他们应该能够访问一个Web API服务,该服务可以访问它并包含一些逻辑。我只想将凭据从客户端应用程序发送到服务,然后服务应返回令牌或其他东西,这些令牌或东西可用于访问客户端应用程序的安全页面和服务的安全方法。但你说那是不可能的?很抱歉我回答晚了。目前,我正忙于实现用于身份验证和授权(以及使用自定义服务进行用户管理)的IdentityServer。IdentityServer将使用ASP.NET Identity与用户存储(数据库)对话。所以,这与我在最初的问题中所说的完全不同,但我认为这是有道理的,不是吗?一旦我进一步实现了这一点,我会发布一个更广泛的答案。谢谢你提供的信息。这对你来说怎么样?您如何使用这种方法管理角色和权限?@GutierrezDev我仍然非常喜欢IdentityServer,不过,与通常的安全措施一样,它相当复杂。角色和权限(声明)可以通过其应用程序(注意,这不是最新的(.NET Core)版本!)和应用程序本身及其(更新的)版本进行管理。希望有帮助!很好@DeveTho。我也在看iDinityServer4。感谢您提到的IdentityAdmin。@DeveTho,好奇的是,您如何管理多个不同应用程序上具有不同角色的用户?例如,一个用户将是一个应用程序的管理员,但不是其他应用程序的管理员。@penleychan我认为您混合了身份验证和授权。IdentityServer执行身份验证部分:它定义哪些应用程序可以请求有关最终用户的哪些数据。根据提供商提供的数据,您可以允许或拒绝用户做特定的事情(授权),每种类型的应用程序都会有所不同。在您的案例中,您可以有一个带有“App1Admin”的特定“role”声明,另一个带有“App2User”的声明。如果您想进一步了解您的授权逻辑:IdentityServer的人员最近构建了这个非常酷的东西:!