如何在 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()
)
我想允许客户端使用特定的授权类型,但在文档中找不到要在客户端中使用的有效值 table。
有什么想法吗?
很好的问题 - 我花了好几个小时才找到这些值。
以下是收集不同值的方法。 AbstractTokenGranter
的每个实现都带有静态字段授权类型 GRANT_TYPE
:
refresh_token
- RefreshTokenGranterauthorization_code
- AuthorizationCodeTokenGranterimplicit
- ImplicitTokenGranterpassword
- ResourceOwnerPasswordTokenGranterclient_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()
)