Spring Cloud OAuth2:密码授予类型&资源安全

时间:2015-03-17 21:07:47

标签: oauth-2.0 single-sign-on spring-security-oauth2 spring-cloud

我对OAuth2的spring-cloud-security提出了两个问题:

  1. 如何通过grant_type保护资源?我想使用client_credentials保护我的REST API,然后希望通过密码授予类型保护用户特定的资源。这甚至可能吗?

  2. 根据this教程,密码授予类型不需要客户端密钥,尽管spring cloud oauth2似乎总是要求客户端保密。我该如何处理?通过设置一个无意义的客户端秘密,如“abc”,只是不关心它?

  3. 如果我有一个带有@ EnableOAuth2Sso的客户端应用程序,我只会获得授权Uri的重定向,尽管我不提供授权类型“授权代码”。如果我只提供密码授权类型,如果我被重定向到令牌Uri会不会更有意义?

  4. 由于

1 个答案:

答案 0 :(得分:3)

  

如何通过grant_type保护资源?我想用client_credentials

来保护我的REST API

使用OAuth2访问规则并指定您只需要客户端。例如。使用#oauth2表达式变量和#oauth2.isClient()source code here)。

  

密码授予类型不需要客户端密钥

错误。您需要验证客户端。如果它没有密码,那么它不是很安全,但如果你愿意,你可以这样做(使用空密码)。

  

如果我有一个带有@ EnableOAuth2Sso的客户端应用程序,我只会获得授权Uri的重定向,尽管我不提供授权类型“授权代码”。如果我只提供密码授权类型,那么重定向到令牌Uri会不会更有意义?

不,令牌端点是一个反向通道,它不能像那样工作(甚至假设您允许从GET授予令牌,用户将如何处理响应?)。外部Web应用程序没有使用密码授权的协议(主要用于本机应用程序)。在Web应用程序中,您应该使用身份验证代码。