Spring Cloud OAuth2:密码授权类型和资源安全
Spring Cloud OAuth2: Password grant type & resource security
我有两个关于 spring-cloud-security 与 OAuth2 的问题:
如何通过 grant_type 保护资源?我想用 client_credentials 保护我的 REST API,然后想通过密码授予类型保护用户特定的资源。这可能吗?
根据 this 教程,密码授予类型不需要客户端密码,尽管 spring cloud oauth2 似乎总是需要客户端密码。我该如何处理?通过设置一个像 "abc" 这样的无意义的客户端秘密并且根本不关心它?
如果我有一个带有@EnableOAuth2Sso 的客户端应用程序,尽管我不提供授权类型"authorization code",但我只会重定向到授权Uri。如果我只提供密码授权类型,我被重定向到令牌 Uri 不是更有意义吗?
谢谢
How do I protected resources by a grant_type? I want to secure my REST API with client_credentials
使用 OAuth2 访问规则并指定您只需要客户端。例如。使用 #oauth2
表达式变量和 #oauth2.isClient()
(source code here).
the password grant type does not need a client secret
错了。您需要对客户端进行身份验证。如果它没有密码,它就不是很安全,但如果你愿意,你可以这样做(使用空密码)。
If I have a client app with @EnableOAuth2Sso I only get a redirect to the authorization Uri although I dont provide grant type "authorization code". Wouldn't it make more sense if I was redirected to the token Uri if I only provide the password grant type?
不,令牌端点是一个反向通道,它不是那样工作的(即使假设您允许从 GET 授予令牌,用户会如何处理响应?)。外部 Web 应用程序没有使用密码授权的协议(它主要用于本机应用程序)。在 Web 应用程序中,您应该使用授权码。
我有两个关于 spring-cloud-security 与 OAuth2 的问题:
如何通过 grant_type 保护资源?我想用 client_credentials 保护我的 REST API,然后想通过密码授予类型保护用户特定的资源。这可能吗?
根据 this 教程,密码授予类型不需要客户端密码,尽管 spring cloud oauth2 似乎总是需要客户端密码。我该如何处理?通过设置一个像 "abc" 这样的无意义的客户端秘密并且根本不关心它?
如果我有一个带有@EnableOAuth2Sso 的客户端应用程序,尽管我不提供授权类型"authorization code",但我只会重定向到授权Uri。如果我只提供密码授权类型,我被重定向到令牌 Uri 不是更有意义吗?
谢谢
How do I protected resources by a grant_type? I want to secure my REST API with client_credentials
使用 OAuth2 访问规则并指定您只需要客户端。例如。使用 #oauth2
表达式变量和 #oauth2.isClient()
(source code here).
the password grant type does not need a client secret
错了。您需要对客户端进行身份验证。如果它没有密码,它就不是很安全,但如果你愿意,你可以这样做(使用空密码)。
If I have a client app with @EnableOAuth2Sso I only get a redirect to the authorization Uri although I dont provide grant type "authorization code". Wouldn't it make more sense if I was redirected to the token Uri if I only provide the password grant type?
不,令牌端点是一个反向通道,它不是那样工作的(即使假设您允许从 GET 授予令牌,用户会如何处理响应?)。外部 Web 应用程序没有使用密码授权的协议(它主要用于本机应用程序)。在 Web 应用程序中,您应该使用授权码。