我有 ResourceServer 应用程序(y <- "intToUtf8(c(105,110,100,105,118,105,100,117,117,109)),intToUtf8(c(101,105,110,122,101,108,112,101,114,115,111,110))"
x <- strsplit(y, "(?<=\\)\\)),", perl=TRUE)[[1]]
unname(sapply(x, function(str) eval(parse(text=str))))
# [1] "individuum" "einzelperson"
)连接到 AuthorizationServer (@EnableResourceServer
)。
我想支持两种拨款类型:
两者都正常运行,但如果@EnableAuthorizationServer
基本用户(使用授权代码流)或客户端(使用客户端凭据),我该如何区分?
如果不能直接做到,你认为我应该创建一个特定的角色/权限或范围(哪个更好?)来确定Principal
何时是客户?
答案 0 :(得分:1)
在您进行身份验证后,您应该在SecurityContext中设置org.springframework.security.oauth2.provider.OAuth2Authentication的实例,其中包含经过身份验证的用户和他们正在使用的客户端的详细信息。
这有一个isClientOnly()方法,如果使用客户端凭据grant,它将返回true。 如果您启用了OAuth2表达式,也可以在@PreAuthorize标记中进行检查:
@PreAuthorize("#oauth2.isClient")