使用Web API的多租户OAuth / OpenIdConnect

时间:2014-08-21 03:02:29

标签: asp.net-web-api oauth-2.0 asp.net-identity-2 openid-connect

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

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

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

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

我见过一些MultiTenant Windows Azure AD示例,他们从声明中获取tenant_id并进行集成,但在这种情况下,我们无法真正使用Windows Azure AD。

有人可以帮我理解我的实施策略吗?

非常感谢任何帮助。

阿努普

1 个答案:

答案 0 :(得分:0)

假设您的"大客户数量有限,这就是我的建议。这些客户中的每一个都会获得自己的登录页面进行登录,这在大多数情况下都是有意义的,并且登录时会有大客户x按钮。

如果可行,请查看owin-middleware github项目https://github.com/owin-middleware/OwinOAuthProviders

我已经能够很快地编写一个额外的oauth提供程序(oauth2用于azure活动目录),并且这些大客户中的每一个都可能在实现oauth方面有一些细微差别。因此,为每个客户编写一个自定义提供程序,然后您可以轻松地使用配置来分离租户,clientid和secret。

相关问题