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

时间:2015-01-28 22:31:17

标签: c# asp.net authentication asp.net-web-api asp.net-web-api2

我一直在努力解决如何简化我们当前/未来WebAPI的WebAPI /身份验证。我是新手,但我会尽力解释。我们从一个WebAPI开始,并设置ASP.Net Identity来处理身份验证等。然后我们设置另一个,很快它将是30。

What we currently have

这里的问题显而易见 - 对于每个新的WebAPI,我们必须插入另一个MS Identity Authorization层。在某些情况下,只有一个单一的,大规模的WebAPI可以工作,但在这种情况下,这些是完全独立的产品(加上其糟糕的设计)。

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

What we've been asked to do

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

我已阅读很多关于WebAPI身份验证的帖子,例如:this thisthis但似乎我发现的一切都与保护SINGLE WebAPI有关,我们知道如何那已经做到了。感觉我们需要的是针对WebAPI的SSO方法。我们似乎需要像外部身份验证方法(如Facebook,Twitter等),但使用我们自己的后端数据库 - 我只是不知道正确的术语。

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

  • 通常的做法是让每个WebAPI都拥有自己的身份验证/授权层,每个层都指向同一个数据库吗?
  • 是否已经在WebAPI / Identity中内置了单一身份验证层概念,或者我是否必须从头开始执行此操作?
  • Authentication Filter我们应该使用什么?

我可以在幕后一起破解它,但感觉有一个明显的答案,我错过了。

是否有内置的方法在每个WebAPI和Authentication API之间设置“Trust”来执行以下操作:

Trust flow

这是我们目前的方向:

Current Direction

如果我能够朝着正确的方向努力,我会很高兴。我只是不想重新发明轮子。

哦,在我忘记之前,我们在IIS上使用asp.net 4.5,WebAPI 2,Identity 2

感谢您的任何指示。

2 个答案:

答案 0 :(得分:2)

您正在寻找的是您自己的网络api的联合身份,并且是Thinktecture's Identity Server旨在解决的问题。 documentation可能是最好的起点

答案 1 :(得分:1)

不要给出太简单的答案,但是你不能仅仅围绕其他人建立一个API。顶级API处理所有授权,然后将调用转发给您的其他API。我不是建筑师,而是我会做的事。