使用带有/ OWIN中间件的Web API作为应用程序之间的共享资源

时间:2014-05-02 15:19:26

标签: asp.net-web-api owin

我对使用可以为许多不同应用程序提供服务的OWIN中间件创建共享Web API感兴趣。这个概念要求/ Token路由和api / Account / Register路由能够根据请求参数命中不同的数据库,通知它应用程序正在调用哪个应用程序。在阅读了OWIN之后,我没有看到任何关于如何实现这一目标的信息。是否建议使用每个应用程序一个Web API?或者最初的概念是否可行?

我当然感谢任何意见。

====== [编辑,阅读@ William&#39的回复] =========================

这个概念是一个单点登录的场景,其中有一个遗留应用程序通过表单身份验证来处理它自己的安全性,但是现在它需要拥有许多卫星应用程序用户可以访问,具体取决于他们购买的访问权限。

Web API将成为管理所有卫星应用程序令牌的代理。由于访问卫星应用程序是有偿的,因此需要将代币分开。

还有一些公司合作伙伴可能希望访问他们出售的网站,而且目前我不清楚这些合作伙伴是否希望将令牌存储在他们自己的数据库中。因此,Web API需要能够对令牌进行分区以满足这些需求。

一旦卫星应用程序(这些将成为水疗中心)遭到用户攻击,它就会与Web API进行通信以进行所有数据层工作。

@William所说的部分'每个应用程序必须共享相同的用户界面'听起来很糟糕;-)我感觉这不会有效。

它必须是一个自定义的OWIN实现,因为遗留应用程序是驱动程序。

1 个答案:

答案 0 :(得分:0)

听起来像是在寻找许多应用程序用来进行身份验证的中央身份验证服务/服务器?

不同的数据库确实让我失望。你是说在认证时,用户可以访问特定的数据库吗?或者您是说多个身份存储库来进行身份验证?

对于集中式身份验证解决方案,我建议使用来自thinktecture的身份服务器(WIF)和/或授权服务器(OAUTH)。每个申请都是一个依赖方。

如果你真的想做一个自定义owin解决方案,你可以做一个单一的api解决方案来做承载授权并在你的其他应用程序中使用该令牌,但你需要实现ISecureDataFormat,以便每个应用程序可以解密令牌到获取身份,每个应用程序必须共享相同的用户。

只是抬头,解密并不意味着你可以信任一个令牌,它真的应该被签名和验证才能完全信任。取决于您的需求和您愿意承担的风险。