如何在 Spring 安全性中找出用于授权授权类型的有效值

How to find out the valid values to use for authorized grant types in Spring Secrity

我想允许客户端使用特定的授权类型,但在文档中找不到要在客户端中使用的有效值 table。

有什么想法吗?

很好的问题 - 我花了好几个小时才找到这些值。

以下是收集不同值的方法。 AbstractTokenGranter 的每个实现都带有静态字段授权类型 GRANT_TYPE:

  • refresh_token - RefreshTokenGranter
  • authorization_code - AuthorizationCodeTokenGranter
  • implicit - ImplicitTokenGranter
  • password - ResourceOwnerPasswordTokenGranter
  • client_credentials - ClientCredentialsTokenGranter

可以通过ClientDetails.getAuthorizedGrantTypes

在客户端实例中找到客户端的授权授权类型

最后但同样重要的是 spring security oauth 遵循此处的规范 - 因此上面提到的授权类型与规范中提到的相匹配。

Here 是我经常使用的东西:

public enum OAuth2GrantTypes {

    AUTHORIZATION_CODE("authorization_code"),
    IMPLICIT("implicit"),
    PASSWORD("password"),
    CLIENT_CREDENTIALS("client_credentials"),
    REFRESH_TOKEN("refresh_token");

    // Currently not supported by Spring Security
    // https://tools.ietf.org/html/draft-ietf-oauth-device-flow-01
    // DEVICE_CODE("device_code")

    private final String name;

    OAuth2GrantTypes(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}

这允许您像这样指定授权类型:

.authorizedGrantTypes(
    OAuth2GrantTypes.IMPLICIT.getName()
)