使用 Client_credential oauth grant 是好是坏?

Using Client_credential oauth grant good or bad?

我有几个 API 并正在构建一个 Web 应用程序,它将使用这些 API 来加载和更新数据库中的数据。我已将 OAuth 服务器、API 端点配置为 OAuth 资源服务器,并将 Web 应用程序配置为 OAuth 客户端。

我正在考虑使用 SAML 进行身份验证并使用 OAuth 进行授权以保护 API 端点的想法。但是经过大量的研究和阅读,我找不到与 spring 相同的东西。

最初,我试过 Auth_code grant,但它不能很好地用于 SAML 身份验证,因为 OAuth 资源服务器也需要对用户进行身份验证。我将尝试在 OAuth 服务器上实施 pre_auth_filter 以查看它是否适用于 SAML 身份验证。但目前,我尝试了对 OAuth 服务器的 client_credentials 授权。它运作良好。但是,如果 OAuth 客户端和服务器 运行 在同一网络上,那么从安全角度来看,对 Web 应用程序使用 client_credentials 授权是否是一种好方法?此外,如果 Web 应用程序部署在多个服务器上,它们可以共享相同的客户端 ID 和密码吗?

我看到的最常见的用法是使用 Spring 安全和 Oauth 2.0 框架进行身份验证和授权。在复杂的环境中,会有一个集中的认证服务器,负责对所有用户进行认证,
所有应用程序服务。在这种情况下,客户端服务的推荐选项是使用 client_credentials 授权类型来验证自己。对于 RESTful 服务,Spring 为此目的提供 OAuth2RestTemplate

客户端凭据将针对每个应用程序服务而不是每个应用程序实例。

众所周知,保护传输中数据的最常见方法是使用 TLS (SSL) 传输数据。由于所有这些 Web 应用程序服务都在同一个网络上,您可以使用自签名证书。同样,每个服务而不是每个应用程序实例的证书。不用说,对于公开公开的资源,请使用由证书颁发机构签署的证书。