Asp.net web api 使用Web API的多租户OAuth/OpenIdConnect

Asp.net web api 使用Web API的多租户OAuth/OpenIdConnect,asp.net-web-api,oauth-2.0,asp.net-identity-2,openid-connect,Asp.net Web Api,Oauth 2.0,Asp.net Identity 2,Openid Connect,我们正在开发一个API,它使用各种方法让用户注册viz。Facebook、Twitter、谷歌以及我们自己的会员系统(使用ASP.NET身份构建) 我们有许多大客户打算使用我们的平台,并一直要求我们允许我们作为OAuth提供商与他们集成。这将允许他们的用户根据他们的系统进行身份验证,然后作为外部帐户链接到我们的系统中。几乎使他们成为我们系统中的另一个“Facebook”stype提供商 如果这只是一个客户,我们可以简单地使用OpenIdConnect并在我们的系统中设置它们。他们将为我们提供一个

我们正在开发一个API,它使用各种方法让用户注册viz。Facebook、Twitter、谷歌以及我们自己的会员系统(使用ASP.NET身份构建)

我们有许多大客户打算使用我们的平台,并一直要求我们允许我们作为OAuth提供商与他们集成。这将允许他们的用户根据他们的系统进行身份验证,然后作为外部帐户链接到我们的系统中。几乎使他们成为我们系统中的另一个“Facebook”stype提供商

如果这只是一个客户,我们可以简单地使用OpenIdConnect并在我们的系统中设置它们。他们将为我们提供一个客户端id和一个元数据URL供我们使用,我们将能够将这些用户链接回我们的系统

我的问题是-如果多个这样的客户都有自己的OpenIdConnect客户端id和元数据,我们将如何为他们做到这一点?我可以在Web API中使用app.UseOpenIdConnectAuthentication设置的多个实例吗

我看过一些多租户Windows Azure广告的示例,他们从声明中获取租户id并进行集成,但在这种情况下,我们不能真正使用Windows Azure广告

有人能帮我理解我的实施策略吗

任何帮助都将不胜感激


Anup

假设您的“大客户”数量有限,我建议如下。这些客户中的每一个都会有自己的登录页面,这在大多数情况下是有意义的,并且会有一个带有大客户x按钮的登录页面

如果可以的话,看看owin中间件github项目


我已经能够很快地编写一个额外的oauth提供程序(用于azure active directory的oauth2),而且这些大客户在如何实现oauth方面可能会有一些细微差别。因此,为每个客户编写一个自定义提供程序,然后您就可以轻松地使用config来分离租户、clientid和secret

我认为[这个类似问题][1]的解决方案将有助于你[1]: