使用单个身份验证层对多个 WebAPI 进行身份验证

Authenticating multiple WebAPIs with a single Identity Authentication layer

我一直在努力研究如何为我们的 current/future WebAPI 简化我们的 WebAPI/Identity 身份验证。我是新手,但我会尽我所能解释它。我们从一个 WebAPI 开始,并设置 ASP.Net Identity 来处理身份验证等。然后再设置一个,很快就30了

这里的问题很明显 - 对于每个新 WebAPI,我们都必须插入另一个 MS 身份授权层。在某些情况下,只需要一个大型 WebAPI 就可以,但在这种情况下,这些是完全独立的产品(加上其糟糕的设计)。

所以我们想拍这样的东西:

但我很难弄清楚每个 WebAPI 如何获取用户信息,以便我可以检查角色等。

我读过很多关于 WebAPI 身份验证的帖子,例如:this this and this 但似乎我发现的所有内容都与保护 SINGLE WebAPI 有关,我们知道如何已经这样做了。感觉我们需要的是一种用于 WebAPI 的 SSO 方法。似乎我们需要类似外部身份验证方法(如 Facebook、Twitter 等)但使用我们自己的后端数据库——我只是不知道正确的术语。

所以我向专家寻求帮助,让我朝着正确的方向前进:

我可以在幕后一起破解它,但感觉好像有一个明显的答案是我想念的。

是否有内置方法在每个 WebAPI 和身份验证 API 之间设置 "Trust" 来执行如下操作:

这是我们目前前进的方向:

如果我能在正确的方向上得到一个普遍的推动,我会很高兴。我只是不想重新发明轮子。

哦,在我忘记之前,我们在 IIS

上使用 asp.net 4.5,WebAPI 2,Identity 2

谢谢指点。

不要给出过于简单的答案,但你不能只构建一个 API 作为围绕其他人的 fasad。顶层 API 处理所有授权,然后将呼叫转发给您的其他 API。我不是建筑师,但这就是我会做的。

您正在寻找的是您自己的网络 API 的联合身份,Thinktecture's Identity Server aims to solve. The documentation 可能是最好的起点