IdentityServer 3 使用用户信息保护 webAPI

IdentityServer 3 securing webAPI with User Informatioin

我们需要使用开放 ID 和 OAuth 标准来保护我们的 .net 网站 api。 IdentityServer 3 非常适合我们,因为我们必须使用现有的用户存储。

为更清晰起见进行了编辑: 我们公司服务于多个客户。我们的每个客户都有自己的数据库。在我们自己开发的客户端应用程序中,当客户用户输入他们的 user/password 时,我们会进行一次查找以进行身份​​验证,这还会确定该应用程序连接到哪个后端数据库。

我们现在需要允许几个值得信赖的合作伙伴访问我们的数据库资源以满足特定需求。我们已经创建了一个网络 api 供他们进行特定调用。网络 api 需要知道合作伙伴正在为哪些客户打电话。合作伙伴从他们这边的服务调用 api,因此没有用户交互。

我正在尝试确定用于完成此任务的流程。我在 https://gist.github.com/jawadatgithub/638c11f08ecc0d76b05c.

找到了一些关于流的非常好的信息

如果我使用客户端凭据流程定义客户端,我不知道他们如何通过他们代表的客户进行调用。我认为我们不想为每个 partner/customer 组合定义一个 "Client",但这是正确的方法吗?

我们最初想到的是提供一个额外的 user/password 或秘密密钥来告诉我们客户,但我不确定客户的 "flow" 是否允许这样做。

如有任何帮助或指导,我们将不胜感激。

如果这对其他人有帮助,我们决定对这些类型的请求采用混合流程。我们考虑为我们的每个客户数据库指定一个服务帐户 (user/pw),通过使用资源所有者密码凭证流程请求令牌,让这个受信任的第三部分访问它们,但决定反对。我们决定反对它,因为标准说不能将它用于此用途。

如果第 3 方想要代表我们的一位客户与我们互动,那么他们将需要在他们这边构建 UI 以重定向到我们进行 user/pw 身份验证和同意。