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

PRB*_*PRB 5 c# asp.net authentication asp.net-web-api asp.net-web-api2

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

我们现在有什么

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

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

我们被要求做什么

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

我读过的WebAPI认证的许多职位,如:这个 这个这个,但它似乎一切我觉得有保护该单一的WebAPI做,我们知道该怎么做了.感觉我们需要的是针对WebAPI的SSO方法.我们似乎需要像外部身份验证方法(如Facebook,Twitter等),但使用我们自己的后端数据库 - 我只是不知道正确的术语.

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

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

我可以在幕后一起破解它,但感觉有一个明显的答案,我失踪了.

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

信任流

这是我们目前的方向:

当前方向

如果我能够在正确的方向上获得一般性的推动,那么我会很高兴.我只是不想重新发明轮子.

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

谢谢你的任何指示.

Rus*_*Cam 2

您正在寻找的是您自己的 Web api 的联合身份,这也是Thinktecture 的身份服务器旨在解决的问题。文档可能是最好的起点