【问题标题】:Spring Cloud OAuth2: Password grant type & resource securitySpring Cloud OAuth2:密码授予类型和资源安全
【发布时间】:2015-05-20 12:11:54
【问题描述】:

我有两个关于使用 OAuth2 的 spring-cloud-security 的问题:

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

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

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

谢谢

【问题讨论】:

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


    【解决方案1】:

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

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

    密码授权类型不需要客户端密码

    错了。您需要对客户端进行身份验证。如果它没有密码,则不是很安全,但如果您愿意,您可以这样做(使用空密码)。

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

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

    【讨论】:

    • 谢谢戴夫!不知道expression-based access control。我现在使用方法安全表达式,它就像一个魅力。谢谢你的回答,我真的很感激。继续做这项伟大的工作!
    猜你喜欢
    • 2020-04-25
    • 2014-09-02
    • 1970-01-01
    • 2023-04-05
    • 2018-05-25
    • 2015-07-18
    • 1970-01-01
    • 2018-05-26
    • 2019-08-05
    相关资源
    最近更新 更多