Spring OAuth2确定principal是oauth2_client还是基本用户

时间:2016-03-02 12:05:30

标签: spring spring-security spring-security-oauth2

我有 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)。

我想支持两种拨款类型:

  1. 授权码
  2. 客户端凭据
  3. 两者都正常运行,但如果@EnableAuthorizationServer 基本用户(使用授权代码流)或客户端(使用客户端凭据),我该如何区分?

    如果不能直接做到,你认为我应该创建一个特定的角色/权限或范围(哪个更好?)来确定Principal何时是客户?

1 个答案:

答案 0 :(得分:1)

在您进行身份验证后,您应该在SecurityContext中设置org.springframework.security.oauth2.provider.OAuth2Authentication的实例,其中包含经过身份验证的用户和他们正在使用的客户端的详细信息。

这有一个isClientOnly()方法,如果使用客户端凭据grant,它将返回true。 如果您启用了OAuth2表达式,也可以在@PreAuthorize标记中进行检查:

@PreAuthorize("#oauth2.isClient")