使用Client_credential oauth授予好还是坏?

时间:2018-04-19 12:08:19

标签: spring spring-security oauth-2.0 spring-security-oauth2 spring-saml

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

我正在尝试使用SAML进行身份验证,使用OAuth进行授权以保护API端点。但经过大量的研究和阅读后,我无法找到与春天相同的东西。

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

1 个答案:

答案 0 :(得分:1)

我见过的最常见用法是使用Spring Security和Oauth 2.0框架进行身份验证和授权。在复杂的环境中,将有一个集中的auth服务器,负责验证所有用户和
所有应用服务。在此方案中,客户端服务的推荐选项是使用client_credentials授权类型对自身进行身份验证。对于RESTful服务,Spring为此提供了OAuth2RestTemplate

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

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