.net core .net核心API中的混合身份验证

.net core .net核心API中的混合身份验证,.net-core,jwt,azure-active-directory,azure-service-fabric,asp.net-core-identity,.net Core,Jwt,Azure Active Directory,Azure Service Fabric,Asp.net Core Identity,我正在构建一个多租户服务结构应用程序,它允许租户指定登录类型-Identity(asp.net)/Azure AD 我有一个身份验证服务,它检查用户链接到哪个租户,然后检查用户的username:password是否有效,如果有效,它将向网关API/web API返回一个JWT令牌,然后允许访问集群上的其余服务 这通过角色来进一步保护,以限制操作和数据访问等 问题1 如果租户使用azure AD,那么保存该租户提供的应用程序id和机密的安全方法是什么? 在我的数据库和加密的信息,它将不得不解密连

我正在构建一个多租户服务结构应用程序,它允许租户指定登录类型-Identity(asp.net)/Azure AD

我有一个身份验证服务,它检查用户链接到哪个租户,然后检查用户的username:password是否有效,如果有效,它将向网关API/web API返回一个JWT令牌,然后允许访问集群上的其余服务

这通过角色来进一步保护,以限制操作和数据访问等

问题1 如果租户使用azure AD,那么保存该租户提供的应用程序id和机密的安全方法是什么? 在我的数据库和加密的信息,它将不得不解密连接到广告(试图保持动态)

问题2 我正在实现我自己的滑动刷新令牌,以便在JWT过期后获得新的JWT,是否有更好的/标准的方法

问题3 是否有更好的/标准的方法来处理此多租户登录过程

问题4 是否有一种方法可以在JWT主题上设置可选声明,允许访问共享服务,但如果声明值不正确,则阻止访问特定于租户的服务

编辑
理想情况下,这些角色不应该是租户广告/B2C的一部分,因为它们的角色是动态的,并且可以从应用程序内部进行管理。

与其构建自己的STS逻辑,不如看一看,这是一个流行且伟大的OSS工具

例如,请查看使用asp.net core的多租户示例

它支持通过实现。可以将服务配置为使用声明


也可能有用。

我强烈建议您使用Azure租户模型,让Azure AD管理所有凭据和身份验证。在当今世界,当存在大量可用的身份提供者时,存储和管理用户凭据是一个非常糟糕的主意

建议阅读:

  • 如何
  • 像MSAL.NET这样的库将自动运行
  • 在Azure广告中使用
  • 在一定程度上发行代币的权利主张

  • 免责声明:我为微软工作

    谢谢LoekD,如果这有帮助,我会看一看并投票。正如我所看到的identityServer,但我不能完全理解它,因为JWT总是由我的身份验证服务生成,而不是由AZure AD或asp.net Identity生成。我的问题是,用户管理然后落在应用程序的主机上,而不是租户上,如果我错了,请纠正我,但如果租户(组织)如果没有Azure AD帐户,我会为他们创建一个B2C,这反过来又需要主机来管理?此外,当涉及到角色时,在一个场景中,系统角色是静态的,每个租户的动态角色也需要由AD管理?因此,ISV为客户管理租户是非常常见的MARS还没有一个蓝色的广告租户。这是一个复杂而令人沮丧的事情,但差距正在缩小,希望在不久的将来不再是个问题。你可以使用B2C,但B2C仍然不支持角色,所以在你的计划中考虑这个事实。Azure广告中没有“动态角色”。我想你指的是。“动态组".在Azure AD中,组和角色是非常不同的东西,请参考此稍微过时的内容以了解我的范围,角色将与内置身份角色位于同一行,然后将其内置到声明中以确定用户是否有权访问资源。请完成我推荐的会话。角色表示不同在Microsoft产品中租用物品。我建议您将它们全部捕获一次:)