授权 Web 应用程序的用户并允许他们访问 API 服务

Authorize users of web application and allow them to access the API service

我想知道可以为以下要求实施的可能的安全机制。

我有一个 API 服务器,它有多个 api 服务可以提供数据。 (例如图API)

我想允许少数组织访问这些数据。组织有自己的网站,因此他们将代表他们对用户进行身份验证。

所以我们需要做的就是授权用户是否向允许的组织请求。

OAuth可以实现吗?

请建议可以实施的各种安全机制。

您看过 Microsoft OWIN 吗?您可以实现自己的授权提供者,继承自 OAuthAuthorizationServerProvider - 持有者令牌 username/password auth 等 https://georgedyrra.com/2016/09/28/using-owin-to-self-host-web-api-and-secure-endpoints/

您可以考虑要求 JWT 作为身份验证令牌。对于 API 调用,每个用户必须从他自己的组织请求一个签名的 JWT,并将 JWT 作为授权 header。您将 API 服务器设置为仅信任由这些组织签署的 JWT。通常,您的验证逻辑将验证令牌是否由这些组织签署,并包含匹配的令牌发行者声明 "iss",并检查到期时间。您还可以要求这些组织将您的 api 服务器列为令牌受众(包含在 "aud" 声明中)。如果令牌被信任和验证,您可以根据令牌中的其他声明进一步授权用户。

在 MicroProfile 社区中,我们尝试定义一种可互操作的方式来解决您描述的类似场景,https://github.com/eclipse/microprofile-jwt-auth/blob/master/spec/src/main/asciidoc/interoperability.asciidoc